Skip to content

Commit 8e0eec3

Browse files
committed
fix:修复edm上传模式,文件大小限制失效
1 parent 8d64cfc commit 8e0eec3

File tree

1 file changed

+28
-6
lines changed
  • packages/renderless/src/file-upload

1 file changed

+28
-6
lines changed

packages/renderless/src/file-upload/index.ts

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -393,13 +393,35 @@ export const properFileSize =
393393
if ([undefined, null].includes(file.size)) return true
394394

395395
let maxSize = 0
396-
state.singleMaxSize = props.edm.singleFileMaxSize || state.singleMaxSize || 200
397-
if (Array.isArray(props.fileSize) && props.fileSize[1]) {
398-
maxSize = state.isEdm
399-
? Math.min(state.singleMaxSize, Number(props.fileSize[1]) / 1024)
400-
: Math.max(Number(props.fileSize[0]) / 1024, Number(props.fileSize[1]) / 1024)
396+
// 优先级:result.config.singleFileMaxSize > props.edm.config.singleFileMaxSize > props.fileSize > props.edm.singleFileMaxSize > state.singleMaxSize(默认200KB)
397+
// 注意:singleFileMaxSize 的单位是 KB,需要转换为 MB 进行比较
398+
const edmConfigSingleFileMaxSize =
399+
state.edmToken?.config?.singleFileMaxSize || props.edm?.config?.singleFileMaxSize
400+
? (state.edmToken?.config?.singleFileMaxSize || props.edm?.config?.singleFileMaxSize) / 1024 // 转换为 MB
401+
: null
402+
403+
if (state.isEdm) {
404+
// EDM 模式下,优先级:edm.config.singleFileMaxSize > props.fileSize > state.singleMaxSize
405+
if (edmConfigSingleFileMaxSize !== null) {
406+
// 优先使用 edm.config.singleFileMaxSize
407+
maxSize = edmConfigSingleFileMaxSize
408+
} else if (Array.isArray(props.fileSize) && props.fileSize[1]) {
409+
// 如果有 props.fileSize 数组,使用最大值(上限),单位从 KB 转为 MB
410+
maxSize = Number(props.fileSize[1]) / 1024
411+
} else if (props.fileSize) {
412+
// 如果有 props.fileSize,使用它,单位从 KB 转为 MB
413+
maxSize = Number(props.fileSize) / 1024
414+
} else {
415+
// 最后才使用 state.singleMaxSize(默认值 200KB),单位从 KB 转为 MB
416+
maxSize = state.singleMaxSize / 1024
417+
}
401418
} else {
402-
maxSize = state.isEdm ? Math.min(state.singleMaxSize) : Number(props.fileSize) / 1024
419+
// 非 EDM 模式,使用 props.fileSize
420+
if (Array.isArray(props.fileSize) && props.fileSize[1]) {
421+
maxSize = Math.max(Number(props.fileSize[0]) / 1024, Number(props.fileSize[1]) / 1024)
422+
} else {
423+
maxSize = Number(props.fileSize) / 1024
424+
}
403425
}
404426

405427
if (state.isEdm || (Array.isArray(props.fileSize) && props.fileSize[1])) {

0 commit comments

Comments
 (0)