我很努力地理解,为什么我想使用MultipartFormDataStreamProvider,当我可以使用HttpContext.Current获取所有信息。MultipartFormDataStreamProvider vs HttpContext.Current
这是很容易做到这一点:
var mydata = HttpContext.Current.Request.Form["mydata"];
比这
string root = HttpContext.Current.Server.MapPath("~/somedir");
var provider = new MultipartFormDataStreamProvider(root);
this.Request.Content.ReadAsMultipartAsync(provider).ContinueWith(t =>
{
var mydata = provider.Contents.First(c => c.Headers.ContentDisposition.Name == "\"mydata\"").ReadAsStringAsync().Result;
});
PS - 我想建立一个ApiController接受文件上传。我读过这篇文章http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-2。
原因之一是能够异步读取内容。 – Michael
另一个原因是,由于您依赖于'HttpContext.Current',因此这不适用于自我托管的场景。 –
看来不幸的是,使用WebAPI时使用此方法需要将文件写入指定路径中的磁盘。没有官方文档指出写什么,为什么,或者表明应用程序负责删除文件。考虑到该文件的很多开销已经在流中。 – simbolo