import path from 'path'; // 获取文件的 content-type export const getContentType = (filePath: string) => { const extname = path.extname(filePath); const contentType = { '.html': 'text/html; charset=utf-8', '.js': 'text/javascript; charset=utf-8', '.mjs': 'text/javascript; charset=utf-8', '.css': 'text/css; charset=utf-8', '.txt': 'text/plain; charset=utf-8', '.json': 'application/json; charset=utf-8', '.png': 'image/png', '.jpg': 'image/jpg', '.gif': 'image/gif', '.svg': 'image/svg+xml', '.wav': 'audio/wav', '.mp4': 'video/mp4', '.md': 'text/markdown; charset=utf-8', // utf-8配置 '.ico': 'image/x-icon', // Favicon 图标 '.webp': 'image/webp', // WebP 图像格式 '.webm': 'video/webm', // WebM 视频格式 '.ogg': 'audio/ogg', // Ogg 音频格式 '.mp3': 'audio/mpeg', // MP3 音频格式 '.m4a': 'audio/mp4', // M4A 音频格式 '.m3u8': 'application/vnd.apple.mpegurl', // HLS 播放列表 '.ts': 'video/mp2t', // MPEG Transport Stream '.pdf': 'application/pdf', // PDF 文档 '.doc': 'application/msword', // Word 文档 '.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', // Word 文档 (新版) '.ppt': 'application/vnd.ms-powerpoint', // PowerPoint 演示文稿 '.pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation', // PowerPoint (新版) '.xls': 'application/vnd.ms-excel', // Excel 表格 '.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', // Excel 表格 (新版) '.csv': 'text/csv; charset=utf-8', // CSV 文件 '.xml': 'application/xml; charset=utf-8', // XML 文件 '.rtf': 'application/rtf', // RTF 文本文件 '.eot': 'application/vnd.ms-fontobject', // Embedded OpenType 字体 '.ttf': 'font/ttf', // TrueType 字体 '.woff': 'font/woff', // Web Open Font Format 1.0 '.woff2': 'font/woff2', // Web Open Font Format 2.0 '.otf': 'font/otf', // OpenType 字体 '.wasm': 'application/wasm', // WebAssembly 文件 '.pem': 'application/x-pem-file', // PEM 证书文件 '.crt': 'application/x-x509-ca-cert', // CRT 证书文件 '.yaml': 'application/x-yaml; charset=utf-8', // YAML 文件 '.yml': 'application/x-yaml; charset=utf-8', // YAML 文件(别名) '.zip': 'application/octet-stream', }; return contentType[extname] || 'application/octet-stream'; };