.Net Core创建Api进行文件上传

  • A+
所属分类:.NET技术
摘要

1、Net Core创建api接口,用于接收外部请求,进行文件的上传2、添加控制器类,添加如下代码:

1、Net Core创建api接口,用于接收外部请求,进行文件的上传

2、添加控制器类,添加如下代码:

        [HttpPost]         [Route("PostFile")]         public String PostFile([FromForm] IFormCollection formCollection)         {             String result = "Fail";             if (formCollection.ContainsKey("user"))             {                 var user = formCollection["user"];             }             FormFileCollection fileCollection = (FormFileCollection)formCollection.Files;             foreach (IFormFile file in fileCollection)             {                 StreamReader reader = new StreamReader(file.OpenReadStream());                 String content = reader.ReadToEnd();                 String name = file.FileName;                 String filename = @"D:/Test/" + 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;         }

3、修改其中需要注意的点,如文件夹是否存在未做判断,需要提前创建文件夹或添加文件夹判断

4、通过postman进行接口测试,form-data数据请求方式,key选择File,value选择文件,进行提交(如图)。

.Net Core创建Api进行文件上传

 

 

5、注意问题:提交请求之后,如遇到报错返回代码413,通常是文件请求大小被限制。目前可提供以下几种解决方案,但在不同条件下生效的方式不一样,需要一一测试

方法一:在接口方法上添加特性[DisableRequestSizeLimit]

同时在startup.cs中的添加

 

            services.Configure<FormOptions>(x =>             {              x.MultipartBodyLengthLimit = 209_715_200;//最大200M             });

方法二:在startup.cs中的添加

      ervices.Configure<FormOptions>(x =>       {           x.ValueLengthLimit = int.MaxValue;           x.MultipartBodyLengthLimit = int.MaxValue;           x.MemoryBufferThreshold = int.MaxValue;       });

如果后续有其它问题或解决方案,将在评论区进行补充。