export enum UploadWays { Image = 'image', Camera = 'camera', File = 'file', } export enum PhoneOS { Android = 'android', Harmony = 'harmony', Ios = 'ios', } export enum PhoneAuths { Camera = 'Camera', PhotoLibrary = 'PhotoLibrary', Biometrics = 'Biometrics', } export enum CacheKeys { AndroidToPhoto = 'android_to_photo', // 安卓去拿照片 } const mimeTypes = Object.freeze({ xls: 'application/vnd.ms-excel', xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', csv: ['text/csv', 'text/comma-separated-values'], }); const utis = Object.freeze({ xls: 'com.microsoft.excel.xls', xlsx: 'org.openxmlformats.spreadsheetml.sheet', csv: 'public.comma-separated-values-text', }); const extensions = Object.freeze({ xls: '.xls', xlsx: '.xlsx', csv: '.csv', }); export const MimeType = { ios: utis, macos: utis, android: mimeTypes, harmony: extensions, windows: mimeTypes, web: mimeTypes, }; export enum UploadFileTypes { AllFile = 'allFiles', Image = 'images', Pdf = 'pdf', Audio = 'audio', Csv = 'csv', PlainText = 'plainText', Video = 'video', Zip = 'zip', Xls = 'xls', Xlsx = 'xlsx', } export enum UploadListTypes { Text = 'text', // 图片列表 PictureCard = 'picture-card', // 图片卡片列表 } export const JPEG = ['jpg', 'jpeg', 'jfif', 'pjpeg', 'pjp']; export const PNG = ['png']; export const SVG = ['svg']; export const WEBP = ['webp']; export type UploadTypeDetectRule = { mimes?: string[]; // 精确mine类型 mimePrefix?: string[]; // 以某个前缀开头的 mime 类型 utis?: string[]; // iOS 的 UTI extensions?: string[]; // 文件扩展名(不含点) }; export const UploadTypeDetectMap: Record< UploadFileTypes, UploadTypeDetectRule > = { [UploadFileTypes.AllFile]: {}, [UploadFileTypes.Image]: { mimePrefix: ['image/'], extensions: [...JPEG, ...PNG, ...SVG, ...WEBP], }, [UploadFileTypes.Pdf]: { mimes: ['application/pdf'], extensions: ['pdf'], }, [UploadFileTypes.Audio]: { mimePrefix: ['audio/'], }, [UploadFileTypes.Video]: { mimePrefix: ['video/'], }, [UploadFileTypes.Csv]: { mimes: ['text/csv', 'text/comma-separated-values'], utis: ['public.comma-separated-values-text'], extensions: ['csv'], }, [UploadFileTypes.PlainText]: { mimes: ['text/plain'], extensions: ['txt'], }, [UploadFileTypes.Zip]: { mimes: ['application/zip'], extensions: ['zip'], }, [UploadFileTypes.Xls]: { mimes: ['application/vnd.ms-excel'], utis: ['com.microsoft.excel.xls'], extensions: ['xls'], }, [UploadFileTypes.Xlsx]: { mimes: [ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', ], utis: ['org.openxmlformats.spreadsheetml.sheet'], extensions: ['xlsx'], }, }; export const UploadTypeLabel: Record = { [UploadFileTypes.AllFile]: 'all', [UploadFileTypes.Image]: 'image', [UploadFileTypes.Pdf]: 'pdf', [UploadFileTypes.Audio]: 'audio', [UploadFileTypes.Video]: 'video', [UploadFileTypes.Csv]: 'csv', [UploadFileTypes.PlainText]: 'txt', [UploadFileTypes.Zip]: 'zip', [UploadFileTypes.Xls]: 'xls', [UploadFileTypes.Xlsx]: 'xlsx', };