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

在日常的文件处理中,我们经常需要根据文件的后缀名来判断文件的类型,以便进行相应的处理。本文将介绍一个实用的 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())
相关推荐
怕浪猫6 小时前
Electron 开发实战(一):从零入门核心基础与环境搭建
前端·electron·ai编程
小鹏linux7 小时前
Ubuntu 22.04 部署开源免费具有精美现代web页面的Casdoor账号管理系统
linux·前端·ubuntu·开源·堡垒机
前端若水8 小时前
会话管理:创建、切换、删除对话历史
前端·人工智能·python·react.js
Bigger8 小时前
mini-cc:一个轻量级 AI 编程助手的诞生
前端·ai编程·claude
涵涵(互关)8 小时前
Naive-ui树型选择器只显示根节点
前端·ui·vue
BY组态8 小时前
Ricon组态系统最佳实践:从零开始构建物联网监控平台
前端·物联网·iot·web组态·组态
BY组态9 小时前
Ricon组态系统vs传统组态软件:为什么选择新一代Web组态平台
前端·物联网·iot·web组态·组态
SoaringHeart9 小时前
Flutter进阶:OverlayEntry 插入图层管理器 NOverlayZIndexManager
前端·flutter
放下华子我只抽RuiKe59 小时前
React 从入门到生产(四):自定义 Hook
前端·javascript·人工智能·深度学习·react.js·自然语言处理·前端框架
IT_陈寒10 小时前
Redis缓存击穿把我整不会了,原来还有这手操作
前端·人工智能·后端