10

我试图在使用 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);

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

4

2 回答 2

23

ES法

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


方法

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

$.ajax({
    url: url,
    type: 'POST',
    data: formData,
    processData: false,
    contentType: false
});
于 2012-11-19T13:04:24.983 回答
2

试试看这个,How to send multipart/form-data form content by ajax (no jquery)? 我正在尝试以 PHP 作为接收者来使用这个脚本,在警告的混合结果方面遇到了一些问题,我认为我的问题是我在脚本的两端都砍掉了太多,以至于它不再起作用。

至于另一张海报“如果您使用的是 JQuery”的评论,我对该评论唯一要说的是,它对不在 JQuery 中工作的人没有帮助,而 JQ 并不是全部和全部的脚本。

于 2013-10-30T22:53:18.380 回答