Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File upload 提供的“HttpContent”实例无效。它没有带有“boundary”参数的“multipart”内容类型标头_File Upload_Asp.net Web Api_Postman - Fatal编程技术网

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

File upload 提供的“HttpContent”实例无效。它没有带有“boundary”参数的“multipart”内容类型标头,file-upload,asp.net-web-api,postman,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("~/upl

我正在编写一个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);
        }
    }
然后我通过邮递员向上述行动发出请求。 我将内容类型标题设置为多部分/表单数据 但在执行操作期间发生错误。 以下是错误消息正文:

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

我查看了postman头,但我发现请求头内容类型in被设置为applicationjson

有人能帮我吗?

首先:邮递员在处理基于文件的请求时有一个bug

您可以尝试将此添加到您的WebApiConfig.cs,它对我有用:

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

您看到的是json格式的响应头,这对您来说没问题

您真正的问题在于邮递员请求,所以只需从请求头中删除“Content-Type:multipart/form-data”条目。 上传一个文件作为表单数据并发送请求就足够了

看看手动设置内容类型与不手动设置内容类型时会发生什么:


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

我不确定我是否理解。内容类型标题包含?它旁边是响应头,而不是请求头,正如您所说的,它看起来不错,因为您得到的响应是json格式的错误。问题一定在其他地方,特别是你在请求中提交数据的方式。谢谢你的回复。你是对的。这是回复标题。我意识到我的错误,问题在其他地方……欢迎你。我只是希望它能帮你一点忙。我找到了!有一个名为enctype的请求头属性必须设置为multipart/form data才能进行上载。非常感谢你的帮助啊,是的。如果您还没有读过,请查看有关enctype的更多信息。如果有人正在寻找有关如何在postman中不使用enctype的可视详细信息。请检查这个。