我有一个表单生成器,我想添加拖放文件功能。发送拖放文件到输入类型文件元素
我被卡住的地方在于所有我遇到的资源在丢失时通过xhr
上传图片。我希望图像一直存在,直到表单被提交。
理想情况下,event.dataTransfer.files[0]
对象将被转移到<input type="file" ...value="[dropped-file]">
元素。
目前我无法做到这一点。他们使用兼容的数据类型吗?
我有一个表单生成器,我想添加拖放文件功能。发送拖放文件到输入类型文件元素
我被卡住的地方在于所有我遇到的资源在丢失时通过xhr
上传图片。我希望图像一直存在,直到表单被提交。
理想情况下,event.dataTransfer.files[0]
对象将被转移到<input type="file" ...value="[dropped-file]">
元素。
目前我无法做到这一点。他们使用兼容的数据类型吗?
您可以在发生拖放事件后创建并发送表单,然后用户单击conf按钮。下面是它的要点:(未测试)。
function uploadFile(file) {
var form = new FormData(),
xhr = new XMLHttpRequest();
form.append('media', file);
xhr.open('POST', '/myurl/');
xhr.onprogress = function(e) {
showProgress();
}
xhr.onload = function(e) {
showSuccessConf();
}
xhr.send(form);
}
uploadFile(event.dataTransfer.files[0]);
为什么使用XHR会出现问题?只需在提交表格后发送请求,或者通过ajax提交整个表格和/或文件。请阅读[FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData)了解更多信息。 –
我的理解是,FormData不适用于较老的(8-9)IE。我错了吗? – emachine
这是真的(FormData在这些浏览器中不存在),但无关紧要,因为无论如何您都无法通过拖放在这些浏览器中上传文件。 –