所有关于使用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
造成I/O开销?
官方教程:http://www.asp.net/web-api/overview/advanced/sending-html-form-data,-part-2
MultipartFormDataStreamProvider
的源代码并使用MultipartStreamProvider
提供程序将文件上传到MemoryStream
而不是写入磁盘来完成了相同的事情。现在才回来发布答案。 - simboloHttpContext.Current.Request.Files[0].InputStream
?你能解释一下它的缺点吗? - Merenzo