意外的MIME多部分流结束。 MIME多部分邮件不完整。 Web API和superagent [英] Unexpected end of MIME multipart stream. MIME multipart message is not complete. Web API and superagent

查看:295
本文介绍了意外的MIME多部分流结束。 MIME多部分邮件不完整。 Web API和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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆