xhr.send(file)不会将其发布为multipart

时间:2010-07-23 04:39:11

标签: javascript firefox html5 google-chrome

在Firefox 3.6和Chrome上,使用xhr.send(文件)只是将原始内容放入请求正文中,而不是真正的multipart / form-data上传。

尝试这样做:http://kaply.com/weblog/2010/05/20/post-multipart-form-xhr/

但是,在send()期间,无法将字符串与文件内容混合。

有任何解决方法吗?

2 个答案:

答案 0 :(得分:14)

xhr.sendAsBinary()是非标准的。相反,使用xhr.send(FormData),它会创建multipart/form-data请求,允许附加文件和任意表单数据。

var formData = new FormData();
formData.append(file.name, file);

var xhr = new XMLHttpRequest();
xhr.open('POST', '/upload', true);
xhr.onload = function(e) { ... };

xhr.send(formData);  // multipart/form-data

请参阅http://www.html5rocks.com/en/tutorials/file/xhr2/#toc-send-formdata

答案 1 :(得分:1)

关键是使用发送二进制(正文)而不是发送(正文)。查看您链接的页面上的最后评论!