26 lines
1.0 KiB
TypeScript
26 lines
1.0 KiB
TypeScript
export const QUALIFICATION_MAX_FILE_SIZE = 5 * 1024 * 1024
|
|
|
|
const allowedExtensions = new Set(['jpg', 'jpeg', 'png'])
|
|
const allowedMimeTypes = new Set(['image/jpeg', 'image/png'])
|
|
|
|
export interface QualificationFileLike {
|
|
name: string
|
|
size: number
|
|
type?: string
|
|
}
|
|
|
|
export function validateQualificationFile(file: QualificationFileLike) {
|
|
const extension = file.name.includes('.') ? file.name.split('.').pop()?.toLowerCase() ?? '' : ''
|
|
if (!allowedExtensions.has(extension)) return '文件格式不支持,请选择 JPG 或 PNG 图片'
|
|
if (file.type && !allowedMimeTypes.has(file.type)) return '文件内容类型与支持的资质格式不一致'
|
|
if (file.size <= 0) return '文件内容为空,请重新选择'
|
|
if (file.size > QUALIFICATION_MAX_FILE_SIZE) return '文件超过 5MB,请压缩后重新选择'
|
|
return ''
|
|
}
|
|
|
|
export function formatQualificationFileSize(bytes: number) {
|
|
if (bytes < 1024) return `${bytes} B`
|
|
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`
|
|
return `${(bytes / 1024 / 1024).toFixed(1)} MB`
|
|
}
|