【发布时间】:2015-03-13 23:20:05
【问题描述】:
有关处理使用 FormData 上传到 ASP.NET WebAPI 处理程序的文件的所有文档/教程/问题都使用MultipartFormDataStreamProvider 处理多部分流以将其拆分为相关的表单字段和文件。
var root = HttpContext.Current.Server.MapPath("~/App_Data");
var provider = new MultipartFormDataStreamProvider(root);
await Request.Content.ReadAsMultipartAsync(provider);
foreach (MultipartFileData file in provider.FileData)
{
// File
}
但是,文件在处理过程中会自动写入目录。
当我可以使用HttpContext.Current.Request.Files[0].InputStream 直接访问内存中的给定文件流时,这似乎很麻烦。
WebAPI 怎样才能直接访问文件流而没有使用MultipartFormDataStreamProvider 的IO 开销?
官方教程:http://www.asp.net/web-api/overview/advanced/sending-html-form-data,-part-2
【问题讨论】:
-
我认为This Question 应该能满足您的需求。
-
谢谢@JonSusiak - 我希望我在几个小时前发现,通过检查源代码或
MultipartFormDataStreamProvider并使用MultipartStreamProvider提供程序给我提供了完全相同的事情在MemoryStream中上传文件,而不是将其写入磁盘。刚刚开始发布答案。 -
@simbolo - 为什么没有你使用
HttpContext.Current.Request.Files[0].InputStream?你能解释一下缺点吗? -
微软有一个很好的上传文件的例子:docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/…
标签: c# asp.net asp.net-web-api multipartform-data