From fb35094efba6988956a0f5a496f5ddf37a7bba9d Mon Sep 17 00:00:00 2001 From: DragonMK3 Date: Sat, 27 Dec 2025 13:33:45 +0800 Subject: [PATCH 1/3] fix:in Chrome, readEntries will only return at most 100 entries at a time. --- src/pages/home/uploads/util.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/pages/home/uploads/util.ts b/src/pages/home/uploads/util.ts index ee7fa88cc..b6bb6916c 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 @@ -36,9 +42,11 @@ export const traverseFileTree = async (entry: FileSystemEntry) => { 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() + /*if (entries.length > 0) { + /* readEntries() } + */ + }, errorCallback) } readEntries() From ad3aa5edf1bf771e84c37dfdf6544e591d3bb1b5 Mon Sep 17 00:00:00 2001 From: DragonMK3 Date: Sat, 27 Dec 2025 13:42:46 +0800 Subject: [PATCH 2/3] style: format code with prettier --- src/pages/home/uploads/util.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/pages/home/uploads/util.ts b/src/pages/home/uploads/util.ts index b6bb6916c..b6054bd19 100644 --- a/src/pages/home/uploads/util.ts +++ b/src/pages/home/uploads/util.ts @@ -10,7 +10,7 @@ export const traverseFileTree = async (entry: FileSystemEntry) => { reject(e) } if (entry.isFile) { - ;(entry as FileSystemFileEntry).file((file) => { + ; (entry as FileSystemFileEntry).file((file) => { const newFile = new File([file], path + file.name, { type: file.type, }) @@ -25,12 +25,12 @@ export const traverseFileTree = async (entry: FileSystemEntry) => { for (let i = 0; i < entries.length; i++) { await internalProcess(entries[i], path + entry.name + "/") } - if (entries.length > 0){ + if (entries.length > 0) { readEntries() - }else { + } else { resolve({}) } - + /* resolve({}) /** why? https://stackoverflow.com/questions/3590058/does-html5-allow-drag-drop-upload-of-folders-or-a-folder-tree/53058574#53058574 @@ -46,7 +46,7 @@ export const traverseFileTree = async (entry: FileSystemEntry) => { /* readEntries() } */ - + }, errorCallback) } readEntries() From 70da2c0d031abbb02037843304368b11686ca317 Mon Sep 17 00:00:00 2001 From: MadDogOwner Date: Fri, 2 Jan 2026 11:00:58 +0800 Subject: [PATCH 3/3] style: format code Signed-off-by: MadDogOwner --- src/pages/home/uploads/util.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/pages/home/uploads/util.ts b/src/pages/home/uploads/util.ts index b6054bd19..aacd6a8dc 100644 --- a/src/pages/home/uploads/util.ts +++ b/src/pages/home/uploads/util.ts @@ -10,7 +10,7 @@ export const traverseFileTree = async (entry: FileSystemEntry) => { reject(e) } if (entry.isFile) { - ; (entry as FileSystemFileEntry).file((file) => { + ;(entry as FileSystemFileEntry).file((file) => { const newFile = new File([file], path + file.name, { type: file.type, }) @@ -41,12 +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() + + if (entries.length > 0) { + readEntries() } */ - }, errorCallback) } readEntries()