UIからアップロードされたファイルを受け入れるpostメソッドを持つWeb APIを書いています。
public async Task<List<string>> PostAsync()
{
if (Request.Content.IsMimeMultipartContent("form-data"))
{
string uploadPath = HttpContext.Current.Server.MapPath("~/uploads");
var streamProvider = new MyStreamProvider(uploadPath);
await Request.Content.ReadAsMultipartAsync(streamProvider);
return streamProvider.FileData
.Select(file => new FileInfo(file.LocalFileName))
.Select(fi => "File uploaded as " + fi.FullName + " (" + fi.Length + " bytes)")
.ToList();
}
else
{
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.BadRequest, "Invalid Request!");
throw new HttpResponseException(response);
}
}
次に、上記のアクションに郵便配達員によるリクエストを投稿します。 content-typeヘッダーをmultipart/form-dataに設定しましたが、アクションの実行中にエラーが発生しました。ここにエラーメッセージ本文があります:
"無効な 'HttpContent'インスタンスが提供されています。'boundary 'パラメーターを持つ' multipart 'content-typeヘッダーがありません。\ r\nパラメーター名:content"
郵便配達員のヘッダーに行きましたが、リクエストヘッダーのcontent-typeがapplication-jsonに設定されていることがわかりました。
誰か私を助けてくれますか?
First:Postmanには、ファイルベースのリクエストの処理にバグがあります。
これをWebApiConfig.cs
に追加してみてください。うまくいきました:
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();