先说下我写这篇博客之前使用这个东西的业务场景:
我有个项目需求是需要,提交表单的时候需要上传文件,所以就在想这个东西可不可以放在参数类中作为一个属性,然后网上找了很多资料,其实是有方法的,网上的很多都杂乱不全,最后我选择用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是能够解析这种媒体类型的。