diff --git a/src/FileUpload.vue b/src/FileUpload.vue index 388de24..bff6fc6 100644 --- a/src/FileUpload.vue +++ b/src/FileUpload.vue @@ -524,19 +524,26 @@ export default { ]) }) } else if (entry.isDirectory && this.dropDirectory) { - entry.createReader().readEntries((entries) => { - let files = [] - let forEach = (i) => { - if (!entries[i] || (this.maximum > 0 && files.length >= this.maximum)) { - return resolve(files) + let files = [] + let dirReader = entry.createReader() + let readEntries = () => { + dirReader.readEntries((entries) => { + let forEach = (i) => { + if ((!entries[i] && i === 0) || (this.maximum > 0 && files.length >= this.maximum)) { + return resolve(files) + } + if (!entries[i]) { + return readEntries() + } + this.getEntry(entries[i], path + entry.name + '/').then((results) => { + files.push(...results) + forEach(i + 1) + }) } - this.getEntry(entries[i], path + entry.name + '/').then((results) => { - files.push(...results) - forEach(i + 1) - }) - } - forEach(0) - }) + forEach(0) + }) + } + readEntries() } else { resolve([]) }