按照 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 的多部分表单 POST https://stackoverflow.com/questions/12384544/multipart-form-post-using-asp-net-web-api),以及最近的这个(webapi 上传时出现“MIME 多部分流。MIME 多部分消息不完整”错误 https://stackoverflow.com/questions/10139052/mime-multipart-stream-mime-multipart-message-is-not-complete-error-on-webapi)。如果第二个链接成立,有谁知道它是否在通过 Nuget 提供的当前版本的 Web API 中?讨论是在 5 月份进行的,Nuget 的最新版本是在 8 月份,因此我认为此修复程序已经部署,并且不是我的问题的根本原因。
我在 MVC4 中遇到了同样的问题,但是 Will 是正确的,请在您的输入中添加一个名称......
<input type="file" id="fileInput" name="fileInput"/>
所有的魔法都恢复并发挥作用了!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)