Files
sweet-hut-ui/src/utils/file.ts

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