c#实现上传文件

复制代码
        [HttpPost]
        public string Postfile([FromForm]IFormCollection formCollection)
        {
//标识一个结果变量
string result = "Fail"; //获取表单提交当中的文件,并将其强转为FormFileCollection FormFileCollection fileCollection = (FormFileCollection)formCollection.Files;
//遍历fileCollection
foreach (var file in fileCollection) {
//打开请求流以获取上传的文件 StreamReader reader
= new StreamReader(file.OpenReadStream());
//从流的当前位置到末尾读取所有字符,如果当前位置位于流的末尾,则返回空字符串“” String content
= reader.ReadToEnd();
//获取文件的名称 String name
= file.FileName;
//保存文件的路径 String filename
= @"D:/桌面/" + name;

                  //if (System.IO.File.Exists(filename))
                  //{
                  // System.IO.File.Delete(filename);
                  //}


//在指定路径中创建或覆盖文件
using (FileStream fs = System.IO.File.Create(filename)) { // 复制文件 file.CopyTo(fs); // 清空缓冲区数据 fs.Flush(); } result = "Success"; } return result; }
复制代码

接下来用postman测试:选择body,选择form-data,第三步下拉选择file,第四步选择上传文件,然后就可以点击Send进行测试了

 然后就会看见在指定路径上有该文件。

扩展:

       FromBody:当请求的 content-type 为 application/json 时,可以不加上这个特性,因为当入参类型为实体类时,系统默认从请求体(body)中获取数据,在这里建议大家加上;

  FromForm:当请求属于表单提交,也就是 content-type 为 application/x-www-form-urlencoded,则必须给参数加上 FromForm 特性,否者会报 400 错误;

  FromQuery:获取地址烂参数,当接口参数是一个实体类时,建议必须加上该特性;

  FromHeader:获取请求头参数;

  FromRoute:获取路由参数,这个可能有些小伙伴会很疑惑,我贴出个代码大家就懂了:

一般建议的风格:
route 放的是query实体的主键id

header 里放的是身份认证 以及分页信息

query 里放的是对于主键条件的补充查询条件

body 里放的是需要更新的实体数据

form 里一般就是指表单数据,用在网页表单里提交

posted @   ZerryLuo  阅读(3553)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示