我正在创建一个拖放文件上传区域。当我一次上传多个文件时,它可以工作,但我需要它能够支持分多个阶段上传。我知道下面的问题是我每次都设置文件,但我无法找出每次调用该方法时将更多文件添加到 dFiles 的正确方法
var dFiles;
//var dFiles = []
var holder = document.getElementById('holder');
holder.ondrop = function (e) {
e.preventDefault();
dFiles = (e.dataTransfer.files);
//dFiles.push(e.dataTransfer.files);
}
我尝试将 dfiles 初始化为空数组并添加文件(上面已注释掉)。后来,当我读取文件数据时,这导致了数据类型不匹配错误
for (var i = 0; i < dFiles.length; i++) {
reader = new FileReader();
reader.readAsDataUrl(dFiles[i]); //error
}
e.dataTransfer.files
is a 文件列表 https://developer.mozilla.org/en-US/docs/Web/API/FileList.
您必须将每个文件分别添加到dFiles
:
var files = e.dataTransfer.files;
for (var i = 0, l = files.length; i < l; i++) {
dFiles.push(files[i]);
}
或者ES6的方式:
dFiles.push(...e.dataTransfer.files);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)