Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 28 additions & 6 deletions packages/renderless/src/file-upload/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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])) {
Expand Down
Loading