所以我有一个文件对象,通过从桌面拖放到一个区域来创建。现在事情都很花哨,直到我必须通过Ajax将它上传到Django后端。我想利用漂亮的Django工具,例如request.FILES等。
现在,我在这里搞乱了一些现有的代码:
xhr.open("post", s.post, true);
// Set appropriate headers
xhr.setRequestHeader("content-type", "multipart/form-data");
xhr.setRequestHeader("x-file-name", file.fileName);
xhr.setRequestHeader("x-file-size", file.fileSize);
xhr.setRequestHeader("x-file-type", file.
xhr.send(file);
尽可能尝试,它似乎不会模拟带有文件输入提交的表单。有什么东西我不见了吗?
谢谢!
答案 0 :(得分:0)
您需要创建一个“FormData”对象,然后将该文件作为参数附加到该对象。
var fd = new FormData();
fd.append("theFile", yourFileObject);
//
// ... set up the xhr ...
//
xhr.send(fd);
显然这只适用于HTML5环境,但是如果你搞乱了可能正在处理的文件内容。
答案 1 :(得分:0)
不幸的是,您无法使用XmlHttpRequest对象上传文件,因为它不受支持。
有一些hacky变通方法(比如使用iFrame),最近有一个新的File api(https://developer.mozilla.org/en/using_files_from_web_applications)用于支持HTML 5的浏览器。
如果您在stackoverflow上搜索更多内容,可以找到有关如何进行解决方法的示例。