MultipartFormDataStreamProvider vs HttpContext.Current

nia*_*her 23 .net asp.net-web-api

当我可以使用HttpContext.Current获取所有信息时,我很难理解为什么我要使用MultipartFormDataStreamProvider.

这样做要容易得多:

var mydata = HttpContext.Current.Request.Form["mydata"];
Run Code Online (Sandbox Code Playgroud)

比这个:

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;
});
Run Code Online (Sandbox Code Playgroud)

PS - 我正在尝试构建一个ApiController来接受文件上传.我已经阅读了这篇文章http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-2.

Gua*_*nxi 4

这是我在MSDN上找到的。我想这可能对你有帮助。

流提供者查看Content-Disposition标头字段,并根据文件名参数的存在确定输出流。如果Content-Disposition标头字段中存在文件名参数,则正文部分将写入 FileStream,否则将写入 MemoryStream。这使得处理由表单数据和文件内容组合而成的 MIME Multipart HTML 表单数据变得很方便。