javascript - AJAX 错误 : "No multipart boundary param in Content-Type"

标签 javascript jquery ajax

我正在尝试将文件从本地主机上传到服务器,但我的网络控制台出现以下错误,状态代码为 500:

no multipart boundary param in Content-Type

我在我的 nginx 反向代理上启用了 cors。我的 AJAX 请求是这样的:

var files = document.getElementById('candidatePhoto').files;
if (!files.length) {
  return alert('Please choose a file to upload first.');
}
var file = files[0];

var form = new FormData();
form.append("files", file);

var settings = {
  "async": true,
  "crossDomain": true,
  "url": "http://example.com",
  "method": "POST",
  "headers": {
    "Content-Type": "multipart/form-data"
  },
  "processData": false,
  "contentType": false,
  "data": form,
  success: function(data) {
    console.log("Success", data);
    addPhoto(data);
  },
  error: function(err) {
    console.log("Error", err);
    alert("Error: " + err);
  }
}

我的 HTML 表单也有 enctype='multipart/form-data'

最佳答案

如果您设置 contentType: false jQuery 将自动应用正确的 Content-Type header 来发送多部分数据。您包含明确指定内容类型的 header 对象会破坏此行为。它需要被删除。将您的 AJAX 请求设置更改为:

var settings = {
  async: true,
  crossDomain: true,
  url: "http://example.com",
  method: "POST",
  processData: false,
  contentType: false,
  data: form,
  success: function(data){
    console.log("Success", data);
    addPhoto(data);
  },
  error: function(err) { 
    console.log("Error", err);
    alert("Error: " + err);
  }
}

关于javascript - AJAX 错误 : "No multipart boundary param in Content-Type",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53426197/

相关文章:

php - woocommerce 自定义结帐字段添加费用以订购 ajax

javascript - 拖放插件来拖动 HTML 控件

javascript - 我需要一个边框长度可变的圆圈

javascript - 打开 Bootstrap 选项卡表单外部页面

php - 在 Web 表单中创建 AJAX 自动建议文本框的最佳库是什么?

javascript - 在输入字段问题中物化CSS下拉菜单

javascript - 如何编写服务于大多数本地文件但将某些文件重新路由到另一个域的 Node 快速应用程序?

javascript - 同步 XHR 弃用

javascript - 如何使用jquery在跨域iframe中更改css 跨域意味着外部链接

javascript - jQuery on click 函数 To li 和嵌套 li