From a3251a2e9e2e835adda13ebdff02edfd93016943 Mon Sep 17 00:00:00 2001 From: zhuddan Date: Mon, 2 Dec 2024 09:46:06 +0800 Subject: [PATCH] =?UTF-8?q?fix(uploader):=20=E4=BF=AE=E5=A4=8D=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E5=A4=9A=E4=B8=AA=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E5=8F=AA=E4=BC=9A=E4=B8=8A=E4=BC=A0=E4=B8=80=E4=B8=AA=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复了 readFile 方法中多文件处理的缺陷 - 调整文件读取逻辑,确保所有选中的文件都能正确处理 --- src/packages/uploader/uploader.taro.tsx | 4 +++- src/packages/uploader/uploader.tsx | 7 +++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/packages/uploader/uploader.taro.tsx b/src/packages/uploader/uploader.taro.tsx index 4706d052da..36630813c3 100644 --- a/src/packages/uploader/uploader.taro.tsx +++ b/src/packages/uploader/uploader.taro.tsx @@ -387,6 +387,7 @@ const InternalUploader: ForwardRefRenderFunction< } const readFile = (files: T[]) => { + const results: FileItem[] = [] files.forEach((file: T, index: number) => { let fileType = file.type const filepath = (file.tempFilePath || file.path) as string @@ -428,8 +429,9 @@ const InternalUploader: ForwardRefRenderFunction< fileItem.url = fileType === 'video' ? file.thumbTempFilePath : filepath } executeUpload(fileItem, index) - setFileList([...fileList, fileItem]) + results.push(fileItem) }) + setFileList([...fileList, ...results]) } const filterFiles = (files: T[]) => { diff --git a/src/packages/uploader/uploader.tsx b/src/packages/uploader/uploader.tsx index 6f008eb460..87630d7ec7 100644 --- a/src/packages/uploader/uploader.tsx +++ b/src/packages/uploader/uploader.tsx @@ -288,6 +288,7 @@ const InternalUploader: ForwardRefRenderFunction< } const readFile = (files: File[]) => { + const results: FileItem[] = [] files.forEach((file: File, index: number) => { const formData = new FormData() formData.append(name, file) @@ -306,13 +307,15 @@ const InternalUploader: ForwardRefRenderFunction< const reader = new FileReader() reader.onload = (event: ProgressEvent) => { fileItem.url = (event.target as FileReader).result as string - setFileList([...fileList, fileItem]) + // setFileList([...fileList, fileItem]) + results.push(fileItem) } reader.readAsDataURL(file) } else { - setFileList([...fileList, fileItem]) + results.push(fileItem) } }) + setFileList([...fileList, ...results]) } const filterFiles = (files: File[]) => {