MIME多部分流的意外结束。 MIME多部分消息未完成。 Web API和superagent

时间:2016-08-24 13:33:25

标签: c# reactjs file-upload superagent

我在将文件从客户端上传到web api时遇到问题。我收到此错误“MIME多部分流的意外结束.MIME多部分消息未完成。”在我试图阅读多部分内容时在控制器中。我用superagent构建了一个React JS客户端,这是我的请求代码:

[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);
        }

}

这是我的控制器代码:

Test

4 个答案:

答案 0 :(得分:4)

我认为这里的问题是由:

引起的
headers: {
             "Content-Type": "multipart/form-data; boundary=gc0p4Jq0M2Yt08jU534c0p",
             "Content-Disposition": "form-data; name=Foo",
         }

我有一个类似的问题,并通过删除标头参数解决,我猜测superagent会自动添加它们。

答案 1 :(得分:0)

我通过这样做解决了这个问题:

 headers: {
                "Content-Disposition": "form-data; name=Foo",
                "enctype": "multipart/form-data"
          }

答案 2 :(得分:0)

我能够通过删除我在post方法上手动设置的标题来解决此问题。 Angular 6 + .NET Web Api

答案 3 :(得分:0)

我因为一个愚蠢的错误而得到这个错误:我的浏览器代理/客户端(我使用的是 Postman),实际上没有选择文件

Postman using Body to POST form-data but input control has null value -- "No file chosen"

如果您使用的是 Postman,还要检查您的标题是否合适(如该问题的其他答案和 other questions 所示):

<块引用>

Content-type 字段已设置为 multipart/form-data