@kevisual/noco
Version:
一个轻量级的 NocoDB API SDK,支持表记录操作和 Base 管理功能。
58 lines (53 loc) • 1.7 kB
text/typescript
export const extname = (str: string): string => {
const match = str.match(/\.[^\.]+$/);
return match ? match[0] : '';
}
/**
* 根据文件扩展名获取 MIME 类型
* @param fileName - 文件名
* @returns MIME 类型
*/
export function getMimeType(fileName: string): string {
const ext = extname(fileName).toLowerCase();
const mimeTypes: Record<string, string> = {
// 图片
'.png': 'image/png',
'.jpg': 'image/jpeg',
'.jpeg': 'image/jpeg',
'.gif': 'image/gif',
'.webp': 'image/webp',
'.svg': 'image/svg+xml',
'.bmp': 'image/bmp',
'.ico': 'image/x-icon',
// 文档
'.pdf': 'application/pdf',
'.doc': 'application/msword',
'.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
'.xls': 'application/vnd.ms-excel',
'.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'.ppt': 'application/vnd.ms-powerpoint',
'.pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
'.txt': 'text/plain',
'.csv': 'text/csv',
// 音视频
'.mp3': 'audio/mpeg',
'.mp4': 'video/mp4',
'.wav': 'audio/wav',
'.avi': 'video/x-msvideo',
'.mov': 'video/quicktime',
// 压缩文件
'.zip': 'application/zip',
'.rar': 'application/x-rar-compressed',
'.7z': 'application/x-7z-compressed',
'.tar': 'application/x-tar',
'.gz': 'application/gzip',
// 代码文件
'.json': 'application/json',
'.xml': 'application/xml',
'.html': 'text/html',
'.css': 'text/css',
'.js': 'text/javascript',
'.ts': 'text/typescript',
};
return mimeTypes[ext] || 'application/octet-stream';
}