按照 ASP.NET 上的教程,实现了一个 Web API 控制器方法来进行异步文件上传,如下所示:
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)
{
Request.CreateErrorResponse(HttpStatusCode.InternalServerError, t.Exception);
}
return Request.CreateResponse(HttpStatusCode.OK);
});
return task;
}
通过标准的多部分 HTML 表单上传文件非常有效。但是,当另一个开发人员尝试通过 Flex 的 FileReference 类构造的多部分表单上传文件时,会引发错误:
MIME 多部分流的意外结束。MIME 多部分消息不完整。
我不知道问题出在 Web API 还是 Flex 上。我发现了一些没有影响的相关修复(使用 ASP.Net Web API 的 Multipart form POST),以及最近的这个(“MIME multipart stream.MIME multipart message is not complete”error on webapi upload)。如果第二个链接成立,有谁知道它是否出现在通过 Nuget 提供的当前 Web API 版本中?讨论是在 5 月,Nuget 的最新版本是 8 月,所以我假设这个修复程序已经部署,并且不是我问题的根本原因。