继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多信息是不完整的。
我不知道,如果问题出在网页API或Flex。 我发现某种相关的修补程序没有任何影响(的使用ASP.Net的Web API多重表单POST ),以及最近的这一个( “MIME多流。MIME多消息未完成”上的WebAPI上传错误 )。 如果第二个环节也是如此,没有人知道它是否通过的NuGet是出网页API的当前版本可用? 讨论是在五月份,从的NuGet最新的版本是八月,所以我想这个修复已完成部署,而不是我的问题的根本原因。
通过现有的研究性阅读,并通过与CodePlex上的问题按照报道,它看起来像其他人证实了这一问题在九月仍然存在。
他们认为,MVC 4无法解析上传没有终止“\ r \ n”。
这个问题是非常简单的,但是非常难解决。 问题是,不Uploadify>未添加为“\ r \ n”个在MultiPartForm消息的结束
http://aspnetwebstack.codeplex.com/discussions/354215
到Flex的上传添加了“\ r \ n”这可能是值得一试
我曾与柔性同样的问题。 以下是解决它的代码。 基本上,我使用自定义流追加该asp.net网页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);
希望这可以帮助。
我曾与MVC4同样的问题,但会是正确的,名称添加到您的输入.....
<input type="file" id="fileInput" name="fileInput"/>
和所有的魔法是备份和工作!
对于这里登陆谷歌搜索:
MIME多流意外结束。 MIME多信息是不完整的。
读请求流不止一次也会出现这种异常。 我与它挣扎了几个小时,直到我发现了一个源解释说,请求流只能读一次。
就我而言,我结合试图读取使用请求流MultipartMemoryStreamProvider
,并在同一时间让ASP.NET通过我的API方法指定参数(请求主体推出)做一些魔术对我来说。
确保在图像文件首先上传的物理实存的虚拟目录(“〜/ App_Data文件”目录下面的例子)。 当您发布的项目,它可能不会在输出文件。
string root = HttpContext.Current.Server.MapPath("~/App_Data");
var provider = new MultipartFormDataStreamProvider(root);
我只是删除我的头,我在我的岗位方法,最终解决这一问题设定。
文章来源: ASP.NET Web API, unexpected end of MIME multi-part stream when uploading from Flex FileReference