hey*_*uss 25 apache-flex asp.net-mvc asp.net-web-api
按照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;
}
Run Code Online (Sandbox Code Playgroud)
通过标准的多部分HTML表单上传文件非常有效.但是,当另一个开发人员尝试通过Flex的FileReference类构造的多部分表单上载文件时,会抛出错误:
MIME多部分流的意外结束.MIME多部分消息未完成.
我不知道问题出在Web API或Flex上.我找到了一些没有任何影响的相关修复程序(使用ASP.Net Web API的多部分表单POST),最近发现了这一个("多部分流.MIME多部分消息未完成"webapi上传错误).如果第二个链接成立,是否有人知道它是否在通过Nuget提供的当前版本的Web API中出现?讨论是在5月份,Nuget的最新版本是8月,所以我认为这个修补程序已经部署,并不是我的问题的根本原因.
小智 35
我有与flex相同的问题.以下是解决它的代码.基本上我使用自定义流来附加asp.net web api期望的换行符.
Stream reqStream = Request.Content.ReadAsStreamAsync().Result;
MemoryStream tempStream = new MemoryStream();
reqStream.CopyTo(tempStream);
tempStream.Seek(0, SeekOrigin.End);
StreamWriter writer = new StreamWriter(tempStream);
writer.WriteLine();
writer.Flush();
tempStream.Position = 0;
StreamContent streamContent = new StreamContent(tempStream);
foreach(var header in Request.Content.Headers)
{
streamContent.Headers.Add(header.Key, header.Value);
}
// Read the form data and return an async task.
await streamContent.ReadAsMultipartAsync(provider);
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
Gre*_*pes 34
我对MVC4有同样的问题,但是Will是正确的,为你的输入添加一个名字......
<input type="file" id="fileInput" name="fileInput"/>
Run Code Online (Sandbox Code Playgroud)
所有的魔力都恢复了工作!
阅读您现有的研究并跟踪代码复合问题后,看起来其他人确认这个问题在9月仍然存在.
他们认为MVC 4无法解析上传而没有终止"\ r \n".
这个问题非常简单但很难解决.问题是Uploadify不会在MultiPartForm消息的末尾添加"\ r \n"
http://aspnetwebstack.codeplex.com/discussions/354215
可能值得检查Flex上传添加"\ r \n"
小智 8
对于那些登陆这里谷歌搜索:
MIME多部分流的意外结束.MIME多部分消息未完成.
多次读取请求流也会导致此异常.我挣扎了好几个小时,直到找到一个消息来源解释请求流只能被读取一次.
在我的例子中,我结合尝试使用a读取请求流MultipartMemoryStreamProvider,同时让ASP.NET通过为我的api方法指定参数(来自请求体)来为我做一些魔术.
| 归档时间: |
|
| 查看次数: |
35757 次 |
| 最近记录: |