これは、blog postの後にC#Web APIを使用して画像をアップロードしています。POSTMANを経由して送信するときにHttpRequest.Filesが空です
この記事では、ARCを使用してそれを行う方法について説明し、正常に動作します。
しかし、私がPOSTMANを使用して同じことをしようとしているとき、失敗しています。
私のリクエストスナップショットです。あなたがデータを参照元記事で
これは、blog postの後にC#Web APIを使用して画像をアップロードしています。POSTMANを経由して送信するときにHttpRequest.Filesが空です
この記事では、ARCを使用してそれを行う方法について説明し、正常に動作します。
しかし、私がPOSTMANを使用して同じことをしようとしているとき、失敗しています。
私のリクエストスナップショットです。あなたがデータを参照元記事で
"X-WWW-フォームURLエンコード"
あなたのポストマンのスクリーンショットは、あなたがそれをアップロードしている示してアップロードされています"フォームデータ"として
さらに、ARCの例ではキーを送信していないように見えるキー "image01"を追加します。
フォーム・データを使用してファイルをアップロードしたい場合は、a different approachを必要とする:
// POST api/files
public async Task<HttpResponseMessage> Post()
{
// Check if the request contains multipart/form-data.
if (!Request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
string root = HttpContext.Current.Server.MapPath("~/App_Data");
var provider = new MultipartFormDataStreamProvider(root);
string value;
try
{
// Read the form data and return an async data.
var result = await Request.Content.ReadAsMultipartAsync(provider);
// This illustrates how to get the form data.
foreach (var key in provider.FormData.AllKeys)
{
foreach (var val in provider.FormData.GetValues(key))
{
// return multiple value from FormData
if (key == "value")
value = val;
}
}
if (result.FileData.Any())
{
// This illustrates how to get the file names for uploaded files.
foreach (var file in result.FileData)
{
FileInfo fileInfo = new FileInfo(file.LocalFileName);
if (fileInfo.Exists)
{
//do somthing with file
}
}
}
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, value);
response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = files.Id }));
return response;
}
catch (System.Exception e)
{
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
}
}
Humph!これは地獄だった。ツール内でContent-Type
ヘッダーを明示的に設定していることを除いて、すべて正しい処理を行っています。 はでなければなりません。ツールのBody
タブにform-data
というファイルを添付すると、郵便配達員はContent-Type
を自動的に検出し、投稿要求で送信します。
Content-Type
を "multipart/form-data"に設定することは、複数の部品の境界を詳細hereとして設定するという複雑なコンセプトを伴います。したがって、Content-Type
ヘッダーを設定すると、明示的に要求が抹消されます。境界を設定する重い吊り上げは、あなたがこの場合にはcontent-type
を明示的に設定することを望まない理由である郵便配達ツールによって自動的に行われます。
Webサーバー上の任意の認証がない場合でも、このAuthorization
ヘッダーを必要としない場合があります。私のシステム上の画像ファイルをアップロードしているときに、私は唯一のAuthorization
ヘッダーを設定しているかを確認してください。したがって、事実上のHeaders
タブは空である必要があります。つまり、キー値のペアはまったくありません。
注:画像ファイルの正しいコンテンツタイプは、ツールで明示的に設定する必要はありませんが、multipart/form-data
です。
コントローラの外観はどうですか? x-wwwを使うと違うのですか? –