我目前正在通过执行以下操作加载已删除的文件:
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);
}
这会让我获得对象网址,然后我可以将其放入音乐播放器中。但是,当迭代输入的文件夹时:
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
类型的文件。根据{{3}},我将能够file.toURL()
并使用它来代替对象网址。这确实给我一个空字符串。 this,但我不知道如何解决这个问题。我看到一些blob URL,但我不知道它会如何工作。
this seems to be there for a reason
尝试将文件和文件夹拖到输出屏幕并自己查看
答案 0 :(得分:3)
我如何解决它:
来自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代码和大致的行,所以我可以自己去寻找它;)