当我可以使用HttpContext.Current获取所有信息时,我很难理解为什么我要使用MultipartFormDataStreamProvider。
这样做要容易得多:
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。
答案 0 :(得分:4)
这是我在MSDN上找到的。我想这可能会对你有帮助。
流提供程序查看 Content-Disposition 标头字段,并根据文件名参数的存在来确定输出流。如果内容 - 处置标头字段中存在文件名参数,则将正文部分写入FileStream,否则将其写入MemoryStream。这样可以方便地处理MIME Multipart HTML Form数据,这是表单数据和文件内容的组合。