前端根据文件后缀名智能识别文件类型的实用函数

在日常的文件处理中,我们经常需要根据文件的后缀名来判断文件的类型,以便进行相应的处理。本文将介绍一个实用的 TypeScript 函数,它能够根据文件后缀名智能识别文件类型。

函数功能概述

matchFileType 函数接收一个文件名作为参数,通过提取文件后缀名并与预定义的文件类型进行匹配,返回对应的文件类型标识。如果无法匹配任何已知类型,则返回 'other';如果没有后缀名,则返回 false

TypeScript 复制代码
/**
 * 根据文件名后缀区分文件类型
 *
 * @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无后缀返回 false
  if (!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 为各种在线文件链接,尤其是对接上传文件组件返回的链接等

TypeScript 复制代码
 matchFileType(path?.split('?').shift())
相关推荐
计算机魔术师4 分钟前
扒完Google AI Agent挑战赛的前三名,我发现了一个共同点
前端
不可能片场24 分钟前
resources/app 为何能覆盖 app.asar
前端·electron
小婉25 分钟前
我用 Next.js + React Flow 从零搭建了一个可视化 AI 工作流编排平台
前端·人工智能·node.js
skiyee35 分钟前
🚀 用 17 行代码给 UniApp 加上全局登录拦截
前端·uni-app
默_笙1 小时前
🌃 HTTP 不认识你:JWT 登录鉴权的完整"酒店入住"指南
前端·javascript
Profile排查笔记1 小时前
JavaScript 实现浏览器指纹生成:基础字段、Canvas 采样与 SHA-256 摘要
前端·人工智能·后端·自动化
不可能片场1 小时前
Electron 子进程退化成 node 的 env 陷阱
前端·electron
搬砖记录员1 小时前
录屏总黑屏?90% 的人没关这个开关——浏览器硬件加速冲突排查指南
前端·音视频开发
promiseThen1 小时前
我用 7 条铁律管住 Cursor:让 AI 写代码不再「自由发挥」
前端·ai编程
梨想橙汁2 小时前
JS 核心语法:运算符流程控制、函数、数组与对象实战详解
前端·javascript