提供的“HttpContent”实例无效。它没有带有'boundary'参数的'multipart'内容类型标头

时间:2014-07-01 06:45:44

标签: file-upload asp.net-web-api postman

我正在编写一个web api,其中有一个post方法接受从UI上传的文件。

public async Task<List<string>> PostAsync()
    {

        if (Request.Content.IsMimeMultipartContent("form-data"))
        {
            string uploadPath = HttpContext.Current.Server.MapPath("~/uploads");

            var streamProvider = new MyStreamProvider(uploadPath);

            await Request.Content.ReadAsMultipartAsync(streamProvider);

            return streamProvider.FileData
                .Select(file => new FileInfo(file.LocalFileName))
                .Select(fi => "File uploaded as " + fi.FullName + " (" + fi.Length + " bytes)")
                .ToList();
        }
        else
        {
            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.BadRequest, "Invalid Request!");
            throw new HttpResponseException(response);
        }
    }

然后我发帖子请求上述行动。 我将content-type标头设置为multipart / form-data 但在执行操作期间发生错误。 这是错误消息正文:

“提供的”HttpContent“实例无效。它没有带有'boundary'参数的'multipart'内容类型标头。\ r \ n参数名称:内容”

我去了邮递员标题,但我发现请求标题内容类型设置为application-json。

Postman screenshot

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:10)

您正在查看响应标头,这是json格式,这对您来说没问题。

您真正的问题在于邮递员请求,因此只需删除&#39;内容类型:multipart / form-data&#39;请求标头中的条目。 足以将文件上传为表单数据并发送请求

查看手动设置Content-Type时的情况与不执行时的情况: enter image description here enter image description here

邮差知道设置内容类型和边界,因为您只设置了内容类型

答案 1 :(得分:0)

首先:Postman在处理基于文件的请求时遇到错误。

您可以尝试将此添加到您为我工作的WebApiConfig.cs

GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();