当前位置:首页 > 技术分析 > 正文内容

最全面的.NET【文件上传】总结(包括js/vue)

ruisui883个月前 (02-03)技术分析8

?【作者】科技、互联网行业优质创作者

【专注领域】.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造

点击右上方“关注”,里面有很多高价值技术文章,是你刻苦努力也积累不到的经验,能助你快速成长。升职+涨薪!!

前言


本文包含.NET Core、.NET Framework、及Web前端、三端的文件上传代码,是全网最全面的文件上传知识总结。


指定文件参数名(.Net Core)

代码

        [HttpPost("UploaFile")]
        public async Task UploadFileAsync(IEnumerable files)
        {
            //获取上传的文件之一
            var file1 = files.FirstOrDefault();

            //获取文件名
            var file1Name = file1.FileName;

            //获取文件流。后续就能进行读取、保存、等文件操作了
            var file1Stream = file1.OpenReadStream();
        }


调用示例

这里有一个需要注意的地方,就是上传文件的参数名,需要跟接口的入参名一致,也就是 files,我们使用的类型为 IEnumerable< IFormFile>,主要是 IFormFile 这个,因为我们上传的文件可能不止一个,所以这里使用了集合,要是不喜欢 IEnumerable,换成 List 也是可以的;

不指定文件参数名(.Net Core)

而在实际开发中,我们可能会碰到前端不配合,或者参数名改来改去,我们后端又不想频繁更改,那怎么办呢,此时我们可以使用以下的方法。

代码

        [HttpPost("UploaFile")]
        public async Task UploadFileAsync()
        {
            //获取上传的文件之一
            var file1 = HttpContext.Request.Form.Files.FirstOrDefault();

            //获取文件名
            var file1Name = file1.FileName;

            //获取文件流。后续就能进行读取、保存、等文件操作了
            var file1Stream = file1.OpenReadStream();
        }


混合(.Net Core)

而同样是一个POST请求,自然是可以通过url,route,from这些传参啦!

代码

[HttpPost("{method}/{value}/UploaFile")]
public?async?Task>?UploadFileAsync(
????[FromRoute]?Parameter?route,
????[FromQuery]?Parameter?query,
????[FromForm]?Parameter?form,
????IEnumerable?files)
{
????
}

示例


.Net Framework中的文件上传

与.Net Core所用方法稍有不同

代码

????????//获取上传的文件之一
????????var?file1?=?context.Request.Files[0];

????????//获取文件名
????????var?file1Name?=?file1.FileName;

????????//获取文件流。后续就能进行读取、保存、等文件操作了
????????var?file1Stream?=?file1.InputStream;



Web前端的处理方式

下面给出Javascript与Vue两种文文件上传方式。

JavaScript 方式

代码




  
  
  
  


  

1、ajax上传




2




3、form 表单标签 submit 上传

表单提交上传 通过IFormFile参数获取上传文件信息
AJAX请求上传,通过Request.Form.Files获取上传文件信息

Upload one or more files using this form:

Vue el-upload 方式

代码




 

写在最后

  • ?请点击上方“关注”我,里面有很多高价值技术文章,是你刻苦努力也积累不到的经验,能助你快速成长。升职+涨薪!!
  • ?推荐?15个?顶级?C#/.NET/.NET Core视频?教程?

领取方式:在我的个人主页的第一篇置顶文章中领取

?回复'面试',获取C#/.NET/.NET Core面试宝典

回复'C#',领取零基础学习C#编程

回复'NET',领取.NET零基础入门到实战

回复'Linux',领取Linux从入门到精通

回复'WPF',领取高薪热门【WPF上位机+工业互联网】从零手写实战

回复'Modbus',领取初识C#+上位机Modbus通信

回复'PLC',领取C#语言与西门子PLC的通信实操

回复'blazor',领取blazor从入门到实战

回复'TypeScript',领取前端热门TypeScript系统教程

回复'vue',领取vue前端从入门到精通

回复'23P',领取C#实现23种常见设计模式

回复'MongoDB',领取MongoDB实战

回复'Trans',领取分布式事务

回复'Lock',领取分布式锁实践

回复'Docker',领取微服务+Docker综合实战

回复'K8s',领取K8s部署微服务

回复'加群',进.NET技术社区交流群

领取方式:在我的个人主页的第一篇置顶文章中领取





扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/786.html

标签: vue url传参
分享给朋友:

“最全面的.NET【文件上传】总结(包括js/vue)” 的相关文章

Linux发行版Nobara更新39版本,号称“专为游戏玩家定制”

IT之家 12 月 27 日消息,Linux 发行版 Nobara 今天推出了 39 版本,主要改进了“Gamescope 合成器”,并更新了 OBS Studio、部分驱动程序及 Nautilus 文件管理器,小伙伴们可以点此访问项目地址。IT之家经过查询得知,Nobara 是一款基于 Fedor...

Vue3 如何实现父子组件传值?

在Vue 3中,要实现父子组件传值效果主要通过props和emit两种机制来实现,下面我们就来详细介绍一下这两种机制。父组件向子组件传值propsprops是Vue组件的一种机制,主要的作用就是实现从父组件向子组件传递数据值,在父组件上通过在子组件标签上定义属性来实现数据属性值的传递,在子组件中通过...

深入理解Vue.js组件通信:父子组件与子父组件数据交互详解

什么是Vue组件通讯 Vue.js 组件通信是指在 Vue 应用的不同组件之间进行数据交换和状态同步的过程。由于 Vue 的组件是基于单文件组件(SFCs)的模块化设计,每个组件都有自己的作用域,因此它们不能直接访问彼此的数据。为了使组件之间能够协同工作,Vue 提供了几种不同的通信方式。以下是 V...

git的几种分支模式

编写代码,是软件开发交付过程的起点,发布上线,是开发工作完成的终点。代码分支模式贯穿了开发、集成和发布的整个过程,是工程师们最亲切的小伙伴。那如何根据自身的业务特点和团队规模来选择适合的分支模式呢?本文分享几种主流 Git 分支模式的流程及特点,并给出选择建议。分支的目的是隔离,但多一个分支也意味着...

代码管理-9-gitlab的使用和设置

gitlab使用1、外观设置完成后保存,返回登录页面查看关于注册,有些公司是不允许打开的,,有些人数非常多的公司就需要打开注册的功能,让人员自己注册,我们来给他特定的权限就可以,毕竟人非常多的时候还由我们来给她们注册就非常不现实了,工作量会很大2、自动注册3、组&用户&项目创建组设置组名称、描述等创...

K8s里我的容器到底用了多少内存?

作者:frostchen导语 Linux下开发者习惯在物理机或者虚拟机环境下使用top和free等命令查看机器和进程的内存使用量,近年来越来越多的应用服务完成了微服务容器化改造,过去查看、监控和定位内存使用量的方法似乎时常不太奏效。如果你的应用程序刚刚迁移到K8s中,经常被诸如以下问题所困扰:容器的...