Skip to content

Commit 787044e

Browse files
committed
fix(tpl): enable uploading over 100 files in each directory
On Chrome 77, readEntries() will only return the first 100 FileSystemEntry instances. In order to obtain all of the instances, readEntries() must be called multiple times. https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries
1 parent 0a0e440 commit 787044e

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

src/tpl/frontend/index.js

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -650,6 +650,15 @@
650650
}
651651
}
652652

653+
function dirReaderToFiles(dirReader, files, onAllRead) {
654+
dirReader.readEntries(function (subEntries) {
655+
if (!subEntries.length) return onAllRead();
656+
entriesToFiles(subEntries, files, function () {
657+
dirReaderToFiles(dirReader, files, onAllRead);
658+
});
659+
}, onAllRead);
660+
}
661+
653662
entries.forEach(function (entry) {
654663
if (entry.isFile) {
655664
var relativePath = entry.fullPath;
@@ -664,14 +673,8 @@
664673
logError(err);
665674
});
666675
} else if (entry.isDirectory) {
667-
var reader = entry.createReader();
668-
reader.readEntries(function (subEntries) {
669-
if (subEntries.length) {
670-
entriesToFiles(subEntries, files, increaseCb);
671-
} else {
672-
increaseCb();
673-
}
674-
});
676+
var dirReader = entry.createReader();
677+
dirReaderToFiles(dirReader, files, increaseCb);
675678
}
676679
});
677680
}

0 commit comments

Comments
 (0)