如何在使用XmlHttpRequest和FormData时设置边界

Ank*_*kit 7 javascript forms ajax

我正在尝试在标头中正确设置边界,同时使用FormData发布XmlHttpRequest:

xhr.open("POST",url);
xhr.setRequestHeader("Content-type","multipart/form-data; boundary=...");

var formData = new FormData();
formData.append("filename", inputId.files[0]);
formData.append(...);

xhr.send(formData);
Run Code Online (Sandbox Code Playgroud)

如何在此处获取请求标头中设置的边界.我看到请求被设置,边界以某种方式在请求中创建.但服务器不知道如何解释它.

Ant*_*zov 21

ES方法

只需不要手动设置Content-Type标头,浏览器就会自动设置"multipart/form-data; boundary = ..."值.


jQuery方法

如果您使用的是jQuery,请将contentType选项设置为false:

$.ajax({
    url: url,
    type: 'POST',
    data: formData,
    processData: false,
    contentType: false
});
Run Code Online (Sandbox Code Playgroud)

  • 原始海报要求 xmlhttprequest 而不是 jquery (5认同)
  • @wondergoat77 如果您仔细阅读,您会注意到我在评论的第一行中回答了有关 XMLHttpRequest 的问题。它完全解决了问题。然后我添加了第二部分,因为还有其他人可能来自 Google 并确实使用 jQuery(当时很常见,那是 2012 年!)。在他们的情况下如何关闭 Content-Type 并不明显。 (3认同)