From 8e0eec327564a281ba1f768028ca0eb63633a3d2 Mon Sep 17 00:00:00 2001 From: discreted66 <953831480@qq.com> Date: Thu, 13 Nov 2025 11:10:54 -0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8Dedm=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=EF=BC=8C=E6=96=87=E4=BB=B6=E5=A4=A7=E5=B0=8F?= =?UTF-8?q?=E9=99=90=E5=88=B6=E5=A4=B1=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/renderless/src/file-upload/index.ts | 34 ++++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/packages/renderless/src/file-upload/index.ts b/packages/renderless/src/file-upload/index.ts index dc41222360..738225e9a9 100644 --- a/packages/renderless/src/file-upload/index.ts +++ b/packages/renderless/src/file-upload/index.ts @@ -393,13 +393,35 @@ export const properFileSize = if ([undefined, null].includes(file.size)) return true let maxSize = 0 - state.singleMaxSize = props.edm.singleFileMaxSize || state.singleMaxSize || 200 - if (Array.isArray(props.fileSize) && props.fileSize[1]) { - maxSize = state.isEdm - ? Math.min(state.singleMaxSize, Number(props.fileSize[1]) / 1024) - : Math.max(Number(props.fileSize[0]) / 1024, Number(props.fileSize[1]) / 1024) + // 优先级:result.config.singleFileMaxSize > props.edm.config.singleFileMaxSize > props.fileSize > props.edm.singleFileMaxSize > state.singleMaxSize(默认200KB) + // 注意:singleFileMaxSize 的单位是 KB,需要转换为 MB 进行比较 + const edmConfigSingleFileMaxSize = + state.edmToken?.config?.singleFileMaxSize || props.edm?.config?.singleFileMaxSize + ? (state.edmToken?.config?.singleFileMaxSize || props.edm?.config?.singleFileMaxSize) / 1024 // 转换为 MB + : null + + if (state.isEdm) { + // EDM 模式下,优先级:edm.config.singleFileMaxSize > props.fileSize > state.singleMaxSize + if (edmConfigSingleFileMaxSize !== null) { + // 优先使用 edm.config.singleFileMaxSize + maxSize = edmConfigSingleFileMaxSize + } else if (Array.isArray(props.fileSize) && props.fileSize[1]) { + // 如果有 props.fileSize 数组,使用最大值(上限),单位从 KB 转为 MB + maxSize = Number(props.fileSize[1]) / 1024 + } else if (props.fileSize) { + // 如果有 props.fileSize,使用它,单位从 KB 转为 MB + maxSize = Number(props.fileSize) / 1024 + } else { + // 最后才使用 state.singleMaxSize(默认值 200KB),单位从 KB 转为 MB + maxSize = state.singleMaxSize / 1024 + } } else { - maxSize = state.isEdm ? Math.min(state.singleMaxSize) : Number(props.fileSize) / 1024 + // 非 EDM 模式,使用 props.fileSize + if (Array.isArray(props.fileSize) && props.fileSize[1]) { + maxSize = Math.max(Number(props.fileSize[0]) / 1024, Number(props.fileSize[1]) / 1024) + } else { + maxSize = Number(props.fileSize) / 1024 + } } if (state.isEdm || (Array.isArray(props.fileSize) && props.fileSize[1])) {