MultipartFormDataStreamProvider vs HttpContext.Current

Я пытаюсь понять, почему я хочу использовать MultipartFormDataStreamProvider, когда я могу получить всю информацию с помощью 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.

Ответ 1

Это то, что я нашел на MSDN. Я думаю, это может помочь вам.

Поставщик потока ищет поле заголовка Content-Disposition и определяет выходной поток на основе наличия параметра имя_файла. Если параметр имя_файла присутствует в поле заголовка Content-Disposition, тогда часть тела записывается в FileStream, иначе он записывается в MemoryStream. Это позволяет обрабатывать данные MIME Multipart HTML Form, которые представляют собой комбинацию данных формы и содержимого файла.