前端根据文件后缀名智能识别文件类型的实用函数
在日常的文件处理中,我们经常需要根据文件的后缀名来判断文件的类型,以便进行相应的处理。本文将介绍一个实用的 TypeScript 函数,它能够根据文件后缀名智能识别文件类型。
函数功能概述
matchFileType 函数接收一个文件名作为参数,通过提取文件后缀名并与预定义的文件类型进行匹配,返回对应的文件类型标识。如果无法匹配任何已知类型,则返回 'other';如果没有后缀名,则返回 false。
/*** 根据文件名后缀区分文件类型** @param fileName - 文件名称* @returns 数据返回:* 1) 无后缀匹配 - false* 2) 匹配图片 - image* 3) 匹配 txt - txt* 4) 匹配 csv - csv* 5) 匹配 excel - excel* 6) 匹配 word - word* 7) 匹配 pdf - pdf* 8) 匹配 ppt - ppt* 9) 匹配视频 - video* 10) 匹配音频 - radio* 11) 其他匹配项 - other*/
export function matchFileType(fileName: any) {// 后缀获取let suffix = '';// 获取类型结果let result = false;if (!fileName) return false;try {// 截取文件后缀suffix = fileName.substr(fileName.lastIndexOf('.') + 1, fileName.length);// 文件后缀转小写,方便匹配suffix = suffix.toLowerCase();} catch {suffix = '';}// fileName无后缀返回 falseif (!suffix) {result = false;return result;}const fileTypeList = [// 图片类型{ typeName: 'image', types: ['png', 'jpg', 'jpeg', 'bmp', 'gif'] },// 文本类型{ typeName: 'txt', types: ['txt'] },// csv文本类型{ typeName: 'csv', types: ['csv'] },// excel类型{ typeName: 'excel', types: ['xls', 'xlsx'] },{ typeName: 'word', types: ['doc', 'docx'] },{ typeName: 'pdf', types: ['pdf'] },{ typeName: 'ppt', types: ['ppt'] },// 视频类型{ typeName: 'video', types: ['mp4', 'm2v', 'mkv'] },// 音频{ typeName: 'radio', types: ['mp3', 'wav', 'wmv'] },];for (const fileTypeItem of fileTypeList) {const typeName = fileTypeItem.typeName;const types = fileTypeItem.types;result = types.includes(suffix);if (result) {return typeName;}}return 'other';
}返回值说明
函数返回以下值之一:
false:文件名无效或无后缀名'image':图片文件(png、jpg、jpeg、bmp、gif)'txt':文本文件(txt)'csv':CSV文件(csv)'excel':Excel文件(xls、xlsx)'word':Word文档(doc、docx)'pdf':PDF文档(pdf)'ppt':PPT文档(ppt)'video':视频文件(mp4、m2v、mkv)'radio':音频文件(mp3、wav、wmv)'other':其他未明确分类的文件类型
使用
path 为各种在线文件链接,尤其是对接上传文件组件返回的链接等
matchFileType(path?.split('?').shift())