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()) }