我目前正在通过以下方式加载已删除的文件:
var files = e.dataTransfer.items;
for (var i = 0; i < files.length; i++) {
var file = files[i]; //typeof is 'DataTransferItem'
var url = URL.createObjectURL(file);
}
这为我提供了对象url,然后可以将其放入音乐播放器中。但是,当遍历输入的文件夹时:
var reader = entry.createReader();
reader.readEntries(function (res) {
res.forEach(function (entry) {
console.log('The entry:', entry);
console.log('The url:', JSON.stringify(entry.toURL()));
});
});
我得到了
FileEntry
类型的文件。根据this,我将能够执行file.toURL()
并使用它代替对象url。这确实返回了一个空字符串。 this seems to be there for a reason,但我不知道如何解决此问题。我看到了有关Blob URL的信息,但我不知道该如何工作。Example
尝试将文件和文件夹拖到输出屏幕,然后自己查看
最佳答案
我如何解决它:
从typeof FileEntry
的条目开始,我们可以做.file(callback)
,其中回调中的第一个参数是File
类型,然后我们可以从以下项中创建一个objectURL:
var reader = entry.createReader();
reader.readEntries(function (res) {
res.forEach(function (entry) {
entry.file(function(file){ //this does the trick
var obj = URL.createObjectURL(file);
}
});
});
非常感谢dandavis,他为我提供了他的JavaScript代码和大概的行,以便我自己去寻找它;)