【发布时间】:2012-11-26 01:42:21
【问题描述】:
按照在 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 类构造的 multipart 表单上传文件时,会抛出错误:
MIME 多部分流意外结束。 MIME 多部分消息不完整。
我不知道问题出在 Web API 还是 Flex。我发现了一些没有影响的相关修复(Multipart form POST using ASP.Net Web API),最近又找到了这个("MIME multipart stream. MIME multipart message is not complete" error on webapi upload)。如果第二个链接成立,有谁知道它是否在通过 Nuget 提供的当前 Web API 版本中?讨论是在 5 月进行的,Nuget 的最新版本是 8 月,所以我认为这个修复程序已经部署,并且不是我的问题的根本原因。
【问题讨论】:
-
在此处放置一个占位符,直到其中一个已删除的答案被取消删除。我遇到了同样的问题,解决方法很简单——为文件上传元素添加一个名称。
<input name="FailsWithoutThis" type="file" />。白痴。 -
如果没有名称,则不会发布输入。
标签: asp.net-mvc apache-flex asp.net-web-api