我正在尝试创建一个拖放区域,该区域将通过webkitGetAsEntry获取 dataTransfer 项目并检查该条目是目录还是文件。
然后,我希望能够将文件制作成 FileList 并将其复制到文件输入中(在发布之前将对其进行验证和处理)。
function handleDrop(event) {
event.preventDefault();
event.dataTransfer.dropEffect = 'copy';
var length = event.dataTransfer.items.length;
var elFileInput = document.getElementById('File');
for (var i = 0; i < length; i++) {
var entry = event.dataTransfer.items[i].webkitGetAsEntry();
if (entry.isFile) {
convertFilesToFileObjects(entry);
}
else if (entry.isDirectory) {
var dirReader = entry.createReader();
dirReader.readEntries(function(entries) {
for (var j = 0; j < entries.length; j++) {
convertFileEntrysToFileObjects(entries[j]);
}
});
}
}
function convertFileEntrysToFileObjects(fileEntry) {
var addFileToInput = function (file) {
console.log(file);
//elFileInput.files = event.dataTransfer.files;
//Need to make a FileList and populate it with Files.
};
if (fileEntry.isFile) {
fileEntry.file(function (addFileToInput, file) {
addFileToInput(file);
}.bind(this, addFileToInput));
}
}
}
我无法将文件复制到 HTMLInputElement 中的 FileList 它是只读的W3 FileList 接口
我一直在尝试通过使用原型和扩展对象来创建 FileList 对象,我还没有完全理解 JS 继承和原型。
我什至可以创建一个 FileList 对象并用文件填充它,然后将其复制到 InputElement?
编辑:错误的 JSFiddle 链接。