// ============================================================ // canvas/mime.ts — MIME 类型推断 // ============================================================ import path from 'node:path'; /** MIME 类型映射表 */ const MIME_MAP: Record = { '.jpg': 'image/jpeg', '.jpeg': 'image/jpeg', '.png': 'image/png', '.webp': 'image/webp', '.gif': 'image/gif', '.bmp': 'image/bmp', '.mp4': 'video/mp4', '.webm': 'video/webm', '.mkv': 'video/x-matroska', '.mov': 'video/quicktime', '.avi': 'video/x-msvideo', '.mp3': 'audio/mpeg', '.wav': 'audio/wav', '.ogg': 'audio/ogg', '.flac': 'audio/flac', '.aac': 'audio/aac', '.m4a': 'audio/mp4', }; /** * 根据文件扩展名推断 MIME 类型。 * @param filePath - 文件路径 * @returns MIME 类型字符串,未知类型返回 'application/octet-stream' */ export function getMimeType(filePath: string): string { const ext = path.extname(filePath).toLowerCase(); return MIME_MAP[ext] || 'application/octet-stream'; }