36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
![]() |
import { message,Upload } from 'antd';
|
||
|
|
||
|
// 验证上传文件大小是否符合要求
|
||
|
// 参数说明:
|
||
|
// file: 上传的文件
|
||
|
// maxSize: 最大文件大小
|
||
|
// type: 文件类型,支持*表示所有类型
|
||
|
const FileTypeMap = {
|
||
|
'application/pdf': 'pdf',
|
||
|
'image/jpeg': 'jpg',
|
||
|
'image/png': 'png',
|
||
|
'application/msword': 'doc',
|
||
|
'application/zip': 'zip',
|
||
|
'application/vnd.openxmlformats-officedocument.wordprocessingml.document': 'docx',
|
||
|
'application/vnd.ms-excel': 'xls',
|
||
|
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'xlsx',
|
||
|
'application/vnd.ms-powerpoint': 'ppt',
|
||
|
'application/vnd.openxmlformats-officedocument.presentationml.presentation': 'pptx',
|
||
|
|
||
|
}
|
||
|
export const validateFileSize = (file: File, maxSize: number,type: string[]) => {
|
||
|
console.log(file)
|
||
|
const { LIST_IGNORE } = Upload;
|
||
|
const isLtMaxSize = file.size / 1024 / 1024 < maxSize;
|
||
|
if (!isLtMaxSize) {
|
||
|
message.error(`文件大小不能超过${maxSize}MB!`);
|
||
|
return LIST_IGNORE;
|
||
|
}
|
||
|
const isValidFormat = type.includes('*') || type.includes(FileTypeMap[file.type as keyof typeof FileTypeMap]);
|
||
|
if (!isValidFormat) {
|
||
|
message.error(`只能上传${type.join(',')}格式文件!`);
|
||
|
return LIST_IGNORE;
|
||
|
}
|
||
|
return isValidFormat && isLtMaxSize;
|
||
|
};
|