93 lines
2.5 KiB
TypeScript
93 lines
2.5 KiB
TypeScript
import { hashSHA256 } from 'vue3-common/utils/cryptoUtil'
|
|
|
|
export const getFileHashName = (file: File) => {
|
|
return hashSHA256(`${file.name}_${file.lastModified}`)
|
|
}
|
|
|
|
export const getFileExtension = (name: string) => {
|
|
return name.substring(name.lastIndexOf('.') + 1).toLowerCase()
|
|
}
|
|
|
|
export const compressOptions = {
|
|
quality: 0.7,
|
|
maxHeight: 800,
|
|
maxWidth: 600
|
|
}
|
|
|
|
export const validateExcel = (fileType: string, fileExtension: string): boolean => {
|
|
// 常见的 Excel MIME 类型
|
|
const excelMimeTypes = [
|
|
'application/vnd.ms-excel', // .xls
|
|
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', // .xlsx
|
|
'application/vnd.ms-excel.sheet.macroEnabled.12', // .xlsm
|
|
'text/csv' // CSV
|
|
]
|
|
|
|
// 常见的 Excel 文件扩展名
|
|
const excelExtensions = ['xls', 'xlsx', 'xlsm', 'csv']
|
|
|
|
return excelMimeTypes.includes(fileType) || excelExtensions.includes(fileExtension.toLowerCase())
|
|
}
|
|
|
|
export const acceptImageTypes = '.jpg,.jpeg,.png,.gif,.webp,.bmp,.JPG,.JPEG,.PNG,.GIF,.WEBP,.BMP'
|
|
|
|
export const acceptVideoTypes = '.mp4,.mov,.avi,.wmv,.flv,.webm,.mpeg,.mpg,.m4v,.3gp,.3g2,.mkv,.ts,.mts,.m2ts'
|
|
|
|
export const validateImage = (fileType: string, fileExtension: string): boolean => {
|
|
// 常见的图片 MIME 类型
|
|
const imageMimeTypes = [
|
|
'image/jpeg', // JPEG
|
|
'image/jpg', // JPG
|
|
'image/png', // PNG
|
|
'image/gif', // GIF
|
|
'image/bmp', // BMP
|
|
'image/webp', // WebP
|
|
'image/svg+xml' // SVG
|
|
]
|
|
|
|
// 常见的图片文件扩展名
|
|
const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg']
|
|
|
|
return imageMimeTypes.includes(fileType) || imageExtensions.includes(fileExtension.toLowerCase())
|
|
}
|
|
|
|
export const validateVideo = (fileType: string, fileExtension: string): boolean => {
|
|
// 常见的视频 MIME 类型
|
|
const videoMimeTypes = [
|
|
'video/mp4', // MP4
|
|
'video/mpeg', // MPEG
|
|
'video/quicktime', // MOV
|
|
'video/x-msvideo', // AVI
|
|
'video/x-matroska', // MKV
|
|
'video/webm', // WebM
|
|
'video/3gpp', // 3GP
|
|
'video/3gpp2', // 3G2
|
|
'video/x-flv', // FLV
|
|
'video/mp2t', // TS (MPEG Transport Stream)
|
|
'application/x-mpegURL', // M3U8 (HLS)
|
|
'video/H264', // H264
|
|
'video/H265' // H265/HEVC
|
|
]
|
|
|
|
// 常见的视频文件扩展名
|
|
const videoExtensions = [
|
|
'mp4',
|
|
'mpeg',
|
|
'mpg',
|
|
'mov',
|
|
'avi',
|
|
'mkv',
|
|
'webm',
|
|
'3gp',
|
|
'3g2',
|
|
'flv',
|
|
'ts',
|
|
'm3u8',
|
|
'h264',
|
|
'h265',
|
|
'hevc'
|
|
]
|
|
|
|
return videoMimeTypes.includes(fileType) || videoExtensions.includes(fileExtension.toLowerCase())
|
|
}
|