意外的MIME多部分流结束。 MIME多部分邮件不完整。 Web API和superagent [英] Unexpected end of MIME multipart stream. MIME multipart message is not complete. Web API and superagent
问题描述
我有一个上传文件从客户端到web api的问题。我收到此错误MIME多部分流的意外结束。MIME多部分邮件不完整。在控制器中,当我试图阅读多部分内容。我可以使用superagent构建一个React JS客户端,这是我的请求代码:
$ b $ pre $ UploadFiles(files:File []) :Promise.IThenable< any> {
return this.Post(/ Payment / files,{
data:{
files:files
},
headers:{
Content-Type:multipart / form-data; boundary = gc0p4Jq0M2Yt08jU534c0p,
Content-Disposition:form-data; name = Foo,
}
});
$ b $ p
$ b
这是我的控制器代码:
[Route(files)]
[HttpPost]
public async Task< HttpResponseMessage> UploadFiles()
{
string root = Path.GetTempPath();
var provider = new MultipartFormDataStreamProvider(root);
流reqStream = Request.Content.ReadAsStreamAsync()。
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(Request.Content.Headers中的var头)
{
streamContent.Headers.Add(header.Key,header.Value);
}
尝试
{
//读取表单数据。
streamContent.LoadIntoBufferAsync()。Wait();
//这是错误的地方
await streamContent.ReadAsMultipartAsync(provider);
返回Request.CreateResponse(HttpStatusCode.OK);
catch(Exception e)
{
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError,e);
$ b
我认为这里的问题是由以下原因造成的:
$ p $ headers:{
Content-Type:多部分/表格数据;边界= gc0p4Jq0M2Yt08jU534c0p,
Content-Disposition:form-data; name = Foo,
}
我有类似的问题,并通过删除标题参数解决,我猜测superagent自动添加它们。
I have a problem with uploading files from client to web api. I am getting this error "Unexpected end of MIME multipart stream. MIME multipart message is not complete." in the controller when i am trying to read the multipart content. I ma building an React JS client with superagent and this is my code for the request:
UploadFiles(files: File[]): Promise.IThenable<any> {
return this.Post("/Payment/files" , {
data: {
files: files
},
headers: {
"Content-Type": "multipart/form-data; boundary=gc0p4Jq0M2Yt08jU534c0p",
"Content-Disposition": "form-data; name=Foo",
}
});
}
And this is my controller code:
[Route("files")]
[HttpPost]
public async Task<HttpResponseMessage> UploadFiles()
{
string root = Path.GetTempPath();
var provider = new MultipartFormDataStreamProvider(root);
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);
}
try
{
// Read the form data.
streamContent.LoadIntoBufferAsync().Wait();
//This is where it bugs out
await streamContent.ReadAsMultipartAsync(provider);
return Request.CreateResponse(HttpStatusCode.OK);
}
catch (Exception e)
{
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
}
}
I think the issue here is caused by:
headers: {
"Content-Type": "multipart/form-data; boundary=gc0p4Jq0M2Yt08jU534c0p",
"Content-Disposition": "form-data; name=Foo",
}
I had a similar issue and was solved by removing the header parameters, am guessing that superagent adds them automatically.
这篇关于意外的MIME多部分流结束。 MIME多部分邮件不完整。 Web API和superagent的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!