我正在尝试multipart/form-data
使用以下 JavaScript 和 jQuery 发送:
var formData = new FormData();
formData.append("projectName", $("#projectNameInput").val());
var file = $("#fileInput")[0].files[0];
formData.append("content", file);
var xhr = new XMLHttpRequest();
xhr.open('POST', '/project', true);
xhr.onload = function(ev) {
// Handling logic omitted
};
xhr.send(formData);
但是,某些客户端浏览器(Firefox 和 Chrome)400 Bad Request
从服务器接收。在检查标头和请求负载时,我发现一些浏览器为文件设置了明确的内容类型,如下所示:
------WebKitFormBoundaryEuDIpEU2Ci8VNwNJ
Content-Disposition: form-data; name="content"; filename="testfile.ext"
Content-Type: EXT Project Data (64bit)
------WebKitFormBoundaryEuDIpEU2Ci8VNwNJ
在一个工作请求中,Content-Type
应该如下:Content-Type: application/octet-stream
,服务器可以正确处理。
我怀疑这与浏览器的配置或文件关联有关。有没有办法为请求的文件部分显式设置内容类型?
某些使用 Firefox 和 Chrome 的用户会出现此问题。但是,有些用户可以使用 Chrome 和 Firefox 成功上传。我们的应用程序不支持 IE。