繁体   English   中英

没有jQuery的javascript xhr文件上传

[英]javascript xhr file upload without jQuery

我在使xhr文件上传而没有jquery时遇到了一些麻烦。 (请不要说使用jQuery)。

如果浏览器支持FormData API并使用它,我听说也可以上传文件。

问题是我不知道如何将附加文件转换为FormData对象。 第二个问题是如何通过XHR发送FormData? 我的意思是,看下面的代码:

var formData = new FormData();
formData.append('somevalue', 'somevalue'); // string
formData.append( ???, ??? ); // file

var xhr = new XMLHttpRequest();
xhr.setRequestHeader('Content-type', 'multipart/form-data; charset=UTF-8');

xhr.open('post', 'URL TO UPLOAD', true);
xhr.onreadystatechange = function() { ... };

xhr.send( ?? WHAT SHOULD BE HERE IF THE FORM DATA CONTAINS FILE? JUST FORM DATA ?? );

请查看代码,尤其是第二个“ formData.append部分”。 我不知道如何将FILE DATA附加到formData对象中。

第二,如果我想通过XHR发送“ formData”,是否要将“ formData”变量放入“ xhr.send”方法中?

xhr.send(formData);

还是我应该做更多的事情? 很难在Google上找到信息,所以如果有人知道此问题,非常感谢您告诉我或建议我下一步该怎么做。 谢谢!

 formData.append( ???, ??? ); // file 

是的,一个文件。 MDN文档中有一个示例:

formData.append('userpic', myFileInput.files[0], 'chris.jpg');
 xhr.setRequestHeader('Content-type', 'multipart/form-data; charset=UTF-8'); 

删除它。 XHR将为您生成正确的内容类型。 手动执行此操作将无法包含(必要的)边界信息。

第二,如果我想通过XHR发送“ formData”,是否要将“ formData”变量放入“ xhr.send”方法中?

是。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM