在Firefox 3.6和Chrome上,使用xhr.send(文件)只是将原始内容放入请求正文中,而不是真正的multipart / form-data上传。
尝试这样做:http://kaply.com/weblog/2010/05/20/post-multipart-form-xhr/
但是,在send()期间,无法将字符串与文件内容混合。
有任何解决方法吗?
答案 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)
关键是使用发送二进制(正文)而不是发送(正文)。查看您链接的页面上的最后评论!