.net web api 上传文件之multipart/form-data

先说下我写这篇博客之前使用这个东西的业务场景:

我有个项目需求是需要,提交表单的时候需要上传文件,所以就在想这个东西可不可以放在参数类中作为一个属性,然后网上找了很多资料,其实是有方法的,网上的很多都杂乱不全,最后我选择用MultipartDataMediaFormatter插件来实现我这个想法,首先上传表单的时候同时上传文件还可以从请求的流中获取到文件,只是这样和我的业务需求有些不耦合,而且代码有点多,所以我才有这种想法,所以我写的这个博客不是适合每个人,仅限喜欢和需要的朋友

我只是知道用这么个插件,网上也是有代码去解析这么个东西的,需要的朋友可以去了解下这个。、

废话不BB了接下上菜。。。。

首先 Install-Package MultipartDataMediaFormatter 安装包

下载好后,在Global文件中加上一句

//以IIs为宿主的webapi,加入以下代码

GlobalConfiguration.Configuration.Formatters.Add(new FormMultipartEncodedMediaTypeFormatter());

我们一般都是用上面这种方法的吧,还有一种宿主的方式,下面的有需要的朋友可以在文章最后的链接去看看。

接下来测试环节,写个参数类

 public class UpLoadFIle
        {
            public string Name { get; set; }

            public HttpFile[] FileImages { get; set; }
        }

控制器代码

 [HttpPost]
        [Route("api/FormData/UpLoad")]
        public HttpResponseMessage UpLoad(UpLoadFIle upLoad)
        {
            return new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new ObjectContent<UpLoadFIle>(upLoad, new JsonMediaTypeFormatter()) };
        }

 Postman测试,我上传一个两个文件,并且还有名字。可以看到返回的结果,我们拿到文件文件名,文件类型,最重要的是我们拿到了流,拿到流我们就想干嘛就干嘛了。

避免有人杠我下半部分也截图出来。

有人看到这,可能觉得这个东西用起来还不错,我个人觉得是挺好用的,如果有朋友觉得好,能帮上忙那我就很开心了。

有用mvc的朋友可能会想,我觉得这种方法不错,我mvc也想用那是不是也需要配置很多东西呢,哎,这个还真不需要,经过我技术老大的点播,给我说了一种方法使用 HttpPostedFileBase[]这种类型照样可以接受多个文件,我们知道mvc和api是有一些不同之处的,mvc是能够解析这种媒体类型的。

帮助链接:https://www.cnblogs.com/kingCpp/p/4901268.html 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
.NET Core WebAPI 可以通过以下步骤实现文件: 1. 在 WebAPI 控制器中添加一个方法,该方法接收一个 IFormFile 类型的参数,用于接收上文件。 2. 在方法中使用 IFormFile.SaveAsAsync() 方法将文件保存到指定的位置。 3. 在 WebAPI 的 Startup.cs 文件中添加以下代码,以启用文件功能: ```csharp services.AddMvc(options => { options.Filters.Add(new ConsumesAttribute("multipart/form-data")); options.Filters.Add(new ProducesAttribute("application/json")); }).AddJsonOptions(options => { options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); }); services.Configure<IISServerOptions>(options => { options.AllowSynchronousIO = true; }); services.Configure<FormOptions>(options => { options.MemoryBufferThreshold = int.MaxValue; options.ValueLengthLimit = int.MaxValue; options.MultipartBodyLengthLimit = int.MaxValue; }); ``` 4. 在 WebAPI 的控制器方法中使用 [FromForm] 属性将上文件绑定到方法参数中。 例如: ```csharp [HttpPost] public async Task<IActionResult> UploadFile([FromForm] IFormFile file) { if (file == null || file.Length == 0) { return BadRequest("File is empty."); } var filePath = Path.Combine(_environment.ContentRootPath, "uploads", file.FileName); using (var stream = new FileStream(filePath, FileMode.Create)) { await file.CopyToAsync(stream); } return Ok("File uploaded successfully."); } ``` 以上就是 .NET Core WebAPI文件的基本步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值