23

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を読みました。

4

1 に答える 1

4

これはMSDNで見つけたものです。これはあなたを助けるかもしれないと思います。

ストリーム プロバイダーは、Content-Dispositionヘッダー フィールドを調べて、ファイル名パラメーターの存在に基づいて出力ストリームを決定します。ファイル名パラメーターがContent-Dispositionヘッダー フィールドに存在する場合、本文部分は FileStream に書き込まれます。それ以外の場合は、MemoryStream に書き込まれます。これにより、フォーム データとファイル コンテンツの組み合わせである MIME マルチパート HTML フォーム データの処理が便利になります。

于 2014-05-30T20:32:35.763 に答える