C#Web文件上传的几种方式

news2024/10/5 17:19:15

1.第一种上传方式,基本通用于.net所有的框架

        [HttpPost]
        [Route("Common/uploadFile1")]
        public string uploads()
        {
            HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//获取传统context
            HttpRequestBase request = context.Request;//定义传统request对象
            HttpFileCollectionBase files = request.Files;
            string fileSuffix = Path.GetExtension(files[0].FileName).ToLower();
            string fileId = Guid.NewGuid().ToString();
            string dateKey = DateTime.Now.ToString("yyyyMMdd");
            string savaPath, uri;     
            uri = @"/fileData/rest/" + dateKey + @"/";
            savaPath = request.MapPath(uri);
            if (!Directory.Exists(savaPath))
            {
                Directory.CreateDirectory(savaPath);
            }
            try
            {
                files[0].SaveAs(savaPath + fileId + fileSuffix);
                return uri + fileId + fileSuffix;
            }catch (Exception ex){
                return ex.Message;
            }
        }

2.WebAPI可以用这个来,但是在低一点的版本没有IFormFile 这个对象

        /// <summary>
        /// 通用文件上传接口
        /// </summary>
        /// <param name="file"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("Common/uploadFile2")]
        public  async Task<Axios<string>>  upload(IFormFile file)
        {
            string fileSuffix = Path.GetExtension(file.FileName).ToLower();
            string fileId = Guid.NewGuid().ToString();
            string dateKey = DateTime.Now.ToString("yyyyMMdd");
            string savaPath,uri;
            uri = @"/fileData/rest/"  + dateKey  + @"/";
            savaPath =  Path.Combine(Directory.GetCurrentDirectory(), uri);
            if (!Directory.Exists(savaPath)){Directory.CreateDirectory(savaPath);}
            //创建特定名称的文件流
            await using var stream = new FileStream(savaPath + fileId + fileSuffix, FileMode.Create);
            try
            {
                //上传文件
                await file.CopyToAsync(stream);
                stream.Flush();
                return Axios<string>.ok(uri + fileId + fileSuffix);
            } catch (Exception ex)  {
                //上传异常处理 
                return Axios<string>.fail(ex.Message);
            }

 

3.上传方式,可以用于.netCore MVC方式的文件上传

        [HttpPost]
        public JsonResult uploadX(HttpPostedFileBase file)
        {
            String suffix = file.FileName.Substring(file.FileName.LastIndexOf(".", StringComparison.Ordinal));
            string fileName = Guid.NewGuid().ToString().Replace("-", "") + suffix;
            string uri = string.Format("{0}/{1}/{2}/", "fileData", "rest", DateTime.Now.Year+""+DateTime.Now.Month +""+ DateTime.Now.Day);
            string filePath = Server.MapPath(string.Format("~/{0}",uri));
            if (!Directory.Exists(filePath))
            {
                Directory.CreateDirectory(filePath);
            }
            file.SaveAs(Path.Combine(filePath, fileName));
            return Json(uri + fileName);
        }
注:以上就是三种文件上传的方式,可以采用第一种方式,兼容性好

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1187435.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springbootMysql文华学院青年志愿者服务预约系统97973-计算机毕业设计项目选题推荐(附源码)

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 文华学院青年志愿者服务预约系统&#xff0c;主要的模块包括管理员&#xff1a;后台首页、轮播图、通知公告管理、资源管理&#xff08;新闻资…

人工智能-卷积神经网络(LeNet)

为了能够应用softmax回归和多层感知机&#xff0c;我们首先将每个大小为\(28\times28\)的图像展平为一个784维的固定长度的一维向量&#xff0c;然后用全连接层对其进行处理。 而现在&#xff0c;我们已经掌握了卷积层的处理方法&#xff0c;我们可以在图像中保留空间结构。 同…

数据分析:小红书新兴场景洞察,捕捉消费新势力

导语 飞盘、骑行&#xff0c;露营…如今&#xff0c;户外运动日渐被人们所喜爱。近年来&#xff0c;继飞盘和骑行后&#xff0c;一项新潮的户外运动越来越受到年轻人的欢迎&#xff0c;路亚钓鱼&#xff0c;越来越多年轻人在入坑钓鱼。 图 | 小红书 图 | 小红书 什么是“路亚…

11.(vue3.x+vite)组件间通信方式之ref与$parent、$children

前端技术社区总目录(订阅之前请先查看该博客) 示例效果 注: (1)ref 加在标签(div等)上,是拿到dom 对象 (2)ref加上组件上,拿到的是组件的引用 (3)让父组件获取子组件的数据或者方法需要通过defineExpose对外暴露,另外让父组件获取子组件的数据或者方法需要通过d…

查看监控提示码流已加密,请切换至本地配置页面设置密钥后重启预览

环境&#xff1a; 硬盘录像机DS-8632N-I16 谷歌浏览器 问题描述&#xff1a; 查看监控提示码流已加密,请切换至本地配置页面设置密钥后重启预览 解决方案&#xff1a; 1.进入系统-安全管理-安全服务&#xff0c;关闭启用码流加密&#xff0c;保存 2.进入网络-高级配置-平…

AI:73-结合语法知识的神经机器翻译研究

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…

Docker - 安装

Docker安装 Docker的基本组成 镜像&#xff08;image&#xff09;: ​ Docker镜像就好比是一个模板&#xff0c;可以通过这个模板来创建容器服务&#xff0c;tomcat镜像 -> run -> tomcat01容器&#xff08;提供服务器&#xff09;&#xff0c;通过这个镜像可以创建多个…

【VUE+ elementUI 实现动态表头渲染】

VUE elementUI 实现动态表头渲染 1、定义 columns&#xff08;表头数据&#xff09; 和 dataList&#xff08;表格数据&#xff09; data() {return {loading: false,dataList: [{ name: 张三, sex: 男, age: 18 },{ name: 林琳, sex: 女, age: 20 },{ name: 王五, sex: 男, …

安卓开发实例:高德地图

想要在app里面显示高德地图&#xff0c;遇到了很多问题&#xff0c;开始想显示百度地图的&#xff0c;个人感觉不喜欢百度地图&#xff0c;跟高德地图有缘&#xff0c;所以就弄个高德地图。 当然你可以直接看开发文档啊&#xff0c;慢走不送&#xff0c;谢谢。 https://lbs.ama…

记一次前后端分离项目跨域导致的set-cookie失效问题解决方案

起因公司项目使用了springsecurity的基础登录进行认证授权&#xff0c;而基础登录使用的是sessioncookie的形式&#xff0c;项目前后端分离&#xff0c;前端调接口的时候就会出现&#xff0c;登陆后点击其他页面&#xff0c;提示未登录跳转登录页的情况&#xff0c;排查了一下问…

小程序开发平台源码系统 各种类型小程序任由选择 带完整的搭建教程

近年来随着微信、支付宝等平台对小程序的大力推广和支持下应运而生的。小程序作为一种轻量级的应用程序&#xff0c;为用户提供了无需下载安装、即用即走的便捷体验&#xff0c;因此得到了广大用户的喜爱和青睐。所以今天罗峰来给大家介绍一款小程序开发平台源码系统&#xff0…

Qt 子窗口不设置parent时,如何随主窗口关闭

遇到个情况&#xff0c;new一个子窗口的时候&#xff0c;如果指定了parent&#xff0c;那在最小化这个子窗口时这个子窗口并不是在缩小到任务栏&#xff0c;而是在任务栏的左上角。像这种&#xff1a; 并且&#xff0c;点击主窗口之后&#xff0c;子窗口也始终显示在主窗口之前…

开源论道 源聚一堂@COSCon

自2015年以来&#xff0c;开源高峰论坛一直是中国开源年会中的传统亮点项目。本次在COSCon23 大会期间的高峰圆桌会&#xff0c;于2023年10月29日在成都高新区的菁蓉汇召开。 本次高峰圆桌上&#xff0c;我们特别邀请了20 位来自企业&#xff0c;基金会和社区的专家和领袖参加讨…

OpenAI震撼技术圈!0代码构建Assistants API,技术原理探秘

&#x1f449;导读 OpenAI 发布会带来了全新的开发方式——Assistants API&#xff0c;这背后基于的正是你可能闻所未闻的 AI Agent 智能体技术。本篇文章将为你全面解析 AI Agent 的概念、技术框架与应用场景。长文干货&#xff0c;先码再看&#xff01; &#x1f449;目录 1 …

lsky Pci-go nas个人图床搭建

①安装PicGo 应用 http://192.168.50.249:18189/api/v1 上传电脑需要有node 和 npm环境&#xff0c;官网下载最新安装板node后&#xff0c;自动会配置npm环境。 ②安装 Lsky-Uploader 获取token&#xff1a; http://www.metools.info/code/post278.html 服务器域名为 Lsky p…

【Python自学笔记】python os.getcwd文件目录找不对

写小组项目的时候需要按照路径读入数据表&#xff0c;数据库和图片列表显示到html&#xff0c;按ChatGPT的答案写了python os.getcwd()&#xff0c;结果迁移到同组同学的电脑上总是报错。 经过一番查询&#xff0c;在CSDN上发现一个完美解决问题的好帖&#xff0c;特此存下链接…

UserAgent使用隧道HTTP代码示例

首先&#xff0c;我们需要安装一个Perl模块来处理HTTP请求&#xff0c;然后&#xff0c;我们需要配置代理信息&#xff0c;如proxy_host和proxy_port。接下来&#xff0c;我们可以使用正则表达式来解析网页内容并提取我们需要的信息。最后&#xff0c;我们可以将这些信息存储到…

Qt实现自定义多选下拉列表

目录 前言1、 功能描述2、代码实现总结 前言 本文记录了一种通过继承 QComboBox 实现下拉列表多选功能的方法。效果如下图所示&#xff1a; 1、 功能描述 普通的下拉列表只支持选择一个选项&#xff0c;在软件开发过程中&#xff0c;经常会遇到下拉列表支持选择多个选项的需…

【脑机接口 算法】EEGNet: 通用神经网络应用于脑电信号

EEGNet: 神经网络应用于脑电信号 中文题目论文下载&#xff1a;算法程序下载&#xff1a;摘要1 项目介绍2 EEGNet网络原理2.1EEGNet原理架构2.2FBCCA 算法2.3自适应FBCCA算法 3EEGNet网络实现4结果 中文题目 论文下载&#xff1a; DOI: 算法程序下载&#xff1a; 地址 摘要…

若依框架维护问题

1.设置table高度 2.处理弹出框遮罩层 < el-dialog :title“title” custom-class“custom_drawer_class” :visible.sync“visible” size“50%” append-to-body> </ el-dialog>