Visual Studio 2012 Expressに同梱のMVCを使用しています。 (Microsoft.AspNet.Mvc.4.0.20710.0)ファイルをアップロードするMVC 4 Web API .NET 4
私はこれがRTMバージョンだと仮定します。 t.IsFaulted == true
continueWithに
public Task<HttpResponseMessage> PostFormData()
{
// 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);
// Read the form data and return an async task.
var task = Request.Content.ReadAsMultipartAsync(provider).
ContinueWith<HttpResponseMessage>(t =>
{
if (t.IsFaulted || t.IsCanceled)
{
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, t.Exception);
}
// This illustrates how to get the file names.
foreach (MultipartFileData file in provider.FileData)
{
Trace.WriteLine(file.Headers.ContentDisposition.FileName);
Trace.WriteLine("Server file path: " + file.LocalFileName);
}
return Request.CreateResponse(HttpStatusCode.OK);
});
return task;
}
しかし、このコードは常に終わる:
私はすべてこのコードを使用して、オンラインの例をたくさん見つけました。例外は次のとおりです。
予期しないMIMEマルチパートストリームの終了。 MIMEマルチパートメッセージは ではありません。
ここは私のクライアントフォームです。私はjQueryのフォームをajaxのアップロードのためにpluginしたいと思いますが、私はこの方法で作業することさえできません。
<form name="uploadForm" method="post" enctype="multipart/form-data" action="api/upload" >
<input type="file" />
<input type="submit" value="Upload" />
</form>
私はそれは、各メッセージの最後にパーサを期待/ CR/LFによって引き起こされていることを読んで、そのバグが6月に修正されました。
私が理解できないことは、実際に修正された場合、なぜこのバージョンのMVC 4が含まれていないのでしょうか?なぜこのバージョンのMVC 4ではこのコードが動作しないと言っているのですか?
ASP.NET Web APIはASP.NET MVCの一部ではなく、独自のNuGetパッケージ - > [ASP.NET Web API 4.0.20710.0](http://nuget.org/packages/aspnetwebapi)を持っています。ご使用のバージョンを確認してください。 – tpeczek