当前位置: 首页 > news >正文

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

在日常的文件处理中,我们经常需要根据文件的后缀名来判断文件的类型,以便进行相应的处理。本文将介绍一个实用的 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())

http://www.dtcms.com/a/593632.html

相关文章:

  • 文山 网站建设 滇icp成都优化官网推广
  • 线性代数 - 矩阵乘法能换括号,不能换顺序;满足结合律,不满足交换律
  • ScaleRL:掌握大语言模型强化学习的规模化艺术
  • AI MCP体系化开发指南:从诞生背景到技术实现
  • QSS选择器详解:让你的Qt应用界面焕然一新
  • 【底层机制】Android低内存管理机制深度解析
  • 商务网站建设目的电子商务网站开发的预期目标
  • 知识管理的复利效应:从“碎钞机”到“印钞机”的认知升级
  • 2025 年世界职业院校技能大赛汽车制造与维修赛道备赛方案
  • IO 多路复用技术演进与原理深度解析
  • 指纹浏览器字体模拟实践
  • 接口在领域层,实现在基础设施层
  • 【LeetCode刷题】移动零
  • 江苏省建设厅网站公示腾讯企业邮箱注册申请官网
  • 本地部署 Stable Diffusion3.5!cpolar让远程访问很简单!
  • UE_ControllRig交互
  • Swift-snapKit使用
  • Hello-Agents第二章深度解析:智能体的进化之路——从符号逻辑到AI原生
  • 51单片机汇编实现DHT11读取温湿度
  • LiveCharts.Wpf 控件的使用
  • 柔性软风管-测量统计一键出量
  • 告别手动录财报!财务报表OCR识别解决方案选型指南
  • (128页PPT)智慧化工厂区一体化管理平台建设方案(附下载方式)
  • jsp网站建设项目实战总结怎么做网站统计
  • 【Rust 探索之旅】Rust 全栈 Web 开发实战:从零构建高性能实时聊天系统
  • 【Rust 探索之旅】Tokio 异步运行时完全指南:深入理解 Rust 异步编程与源码实现
  • 个人网站做经营性crm销售管理系统功能
  • Ubuntu 22.04 Docker 安装指南
  • C++基础语法篇二 ——引用、内联和空指针
  • 有没有做兼职的好网站十堰网络公司排名