JSFiddle - React, Tailwind, and code Playground
JavaScript
async function UploadFiles(e){
console.log("start");
console.log(e.originalEvent.dataTransfer.items.length);
var items = e.originalEvent.dataTransfer.items;
for (var i=0; i<items.length; i++) { //по всей видимости, этот for срабатывает только один раз, но почему?
// webkitGetAsEntry is where the magic happens
var item = items[i].webkitGetAsEntry();
if (item) {
await traverseFileTree(item);//Вот этот метод выполняется в любом случае 1 раз
}
}
console.log("Успешно!");
}
async function traverseFileTree(item, path) {
path = path || "";
if (item.isFile) {
// Get file
console.log("File:", path + item.name);
} else if (item.isDirectory) {
// Get folder contents
var dirReader = item.createReader();
var allentries = [];
var entries = await getEntriesFromReader(dirReader);
while(entries.length > 0){
allentries.push(entries);
entries = await getEntriesFromReader(dirReader);
}
var entr = [];
for (var i=0; i<allentries.length; i++) {
for (var j=0; j<allentries[i].length; j++) {
entr.push(allentries[i][j]);
}
}
for (var i=0; i<entr.length; i++) {
await traverseFileTree(entr[i], path + item.name + "/");
}
}
}
async function getEntriesFromReader(reader) {
return new Promise((resolve)=>reader.readEntries(resolve))
}