From b19a00382181fc398e3bf64580dc6e0392aee3e9 Mon Sep 17 00:00:00 2001 From: DragonMK3 Date: Fri, 2 Jan 2026 11:10:29 +0800 Subject: [PATCH] fix(upload): resolve 100-entry limit of readEntries in Chrome (#347) * fix:in Chrome, readEntries will only return at most 100 entries at a time. * style: format code with prettier --- src/pages/home/uploads/util.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/pages/home/uploads/util.ts b/src/pages/home/uploads/util.ts index ee7fa88..aacd6a8 100644 --- a/src/pages/home/uploads/util.ts +++ b/src/pages/home/uploads/util.ts @@ -25,7 +25,13 @@ export const traverseFileTree = async (entry: FileSystemEntry) => { for (let i = 0; i < entries.length; i++) { await internalProcess(entries[i], path + entry.name + "/") } - resolve({}) + if (entries.length > 0) { + readEntries() + } else { + resolve({}) + } + + /* resolve({}) /** why? https://stackoverflow.com/questions/3590058/does-html5-allow-drag-drop-upload-of-folders-or-a-folder-tree/53058574#53058574 Unfortunately none of the existing answers are completely correct because @@ -35,10 +41,11 @@ export const traverseFileTree = async (entry: FileSystemEntry) => { To actually get all the files, we'll need to call readEntries repeatedly (for each directory we encounter) until it returns an empty array. If we don't, we will miss some files/sub-directories in a directory e.g. in Chrome, readEntries will only return at most 100 entries at a time. - */ + if (entries.length > 0) { readEntries() } + */ }, errorCallback) } readEntries()