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

时间:2012-07-11 22:19:35

标签: javascript ajax forms

我正在尝试在标题中正确设置边界,同时使用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);

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

2 个答案:

答案 0 :(得分:21)

ES方法

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


jQuery方法

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

$.ajax({
    url: url,
    type: 'POST',
    data: formData,
    processData: false,
    contentType: false
});

答案 1 :(得分:2)

试着看看这个,How to send multipart/form-data form content by ajax (no jquery)?我正在尝试使用PHP作为接收者来处理这个脚本,对于警告的混合结果有一些问题,我认为我的问题是我已经破解了脚本结束太多,不再运作。

至于其他海报的评论“如果你正在使用JQuery”,那么我唯一要对该评论说的是,它对没有在JQuery工作的人没有帮助,而JQ并不是全部并结束所有脚本。