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])) {