gpt4 book ai didi

javascript, html5 : e. dataTransfer.items 与 e.dataTransfer.files,如何使用前者获取文件大小?

转载 作者:行者123 更新时间:2023-12-01 03:21:46 30 4
gpt4 key购买 nike

当删除文件并访问这些文件的信息时,使用

let files= e.dataTransfer.files;

您可以检查文件大小( https://developer.mozilla.org/en-US/docs/Web/API/File )。但是如果您使用较新的(以及据我所知的替代品)

let items = e.dataTransfer.items;

那么就无法获取文件大小( https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/items )。

哪种方法是了解删除文件大小的正确方法?

答案:通过使用 .getAsFile() 访问文件

但是,读取目录时如何做到这一点?查看代码

let items = e.dataTransfer.items;
for (let i=0; i < items.length; i++) {
let item = items[i].webkitGetAsEntry();
if (item && item.isFile)
console.log(items[i].getAsFile()); // HERE IT WORKS
else if (item && item.isDirectory) {
item.createReader().readEntries(function(entries) {
for (let j=0; j<entries.length; j++)
see_file(entries[j].getAsFile()); // HERE IT DOES NOT WORK
});
}
}

最佳答案

根据评论中提供的答案,我们得出以下结论:

如果放置的项目是一个目录,则该行

item.createReader().readEntries(function(entries) {

生成一个条目数组,它们本身就是item.webkitGetAsEntry()实例。

无法访问“父级”,例如

 for (let j=0; j<entries.length; j++) {
let parent = entries[j].parent;
console.log(parent.webkitGetAsEntry());
console.log(parent.getAsFile());
//console.log(entries[j].getAsFile()) -> this fails
}

但是,从上面提到的答案的代码来看,可以做到这一点

 for (let j=0; j<entries.length; j++) {
entries[j].file(function(file) {
console.log(file.webkitGetAsEntry());
console.log(file.getAsFile());
});
}

因此成功访问“父”节点。但我无法找到有关此的文档,我缺少什么?

编辑:您可以在这里找到它 https://wicg.github.io/entries-api/#api-fileentry(见评论)

关于javascript, html5 : e. dataTransfer.items 与 e.dataTransfer.files,如何使用前者获取文件大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45137234/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com