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

正则表达式检测文件类型是否为视频或图片

// 配置化文件类型检测(集中管理支持的类型)
const FILE_TYPE_CONFIG = {video: {extensions: ['mp4', 'webm', 'ogg', 'quicktime'], // 可扩展支持更多格式regex: /^video\/(mp4|webm|ogg|quicktime)$/i // 自动生成正则},image: {extensions: ['jpeg', 'jpg', 'png', 'webp', 'gif', 'svg+xml'], // 包含SVG支持regex: /^image\/(jpeg|jpg|png|webp|gif|svg\+xml)$/i}
};function detectFileType(type: string): {isVideo: boolean;isImage: boolean;extension: string | null;
} {// 统一处理MIME类型const normalizedType = type.toLowerCase();// 视频检测const isVideo = FILE_TYPE_CONFIG.video.regex.test(normalizedType);// 图片检测const isImage = FILE_TYPE_CONFIG.image.regex.test(normalizedType);// 提取扩展名(可选功能)const extension = FILE_TYPE_CONFIG.image.extensions.find(ext => normalizedType.includes(ext)) || FILE_TYPE_CONFIG.video.extensions.find(ext => normalizedType.includes(ext)) || null;return { isVideo, isImage, extension };
}// 使用示例
const { type } = file;
const { isVideo, isImage } = detectFileType(type);

添加文件大小限制

function validateFileSize(file: File, maxSizeMB: number): boolean {return file.size <= maxSizeMB * 1024 * 1024;
}

添加白名单域名验证(防止恶意文件)

//添加白名单域名验证(防止恶意文件)
function validateFileOrigin(url: string, allowedDomains: string[]): boolean {try {const { hostname } = new URL(url);return allowedDomains.includes(hostname);} catch {return false;}
}

 使用示例

const { type, size} = file;// 基础检测
const { isVideo, isImage } = detectFileType(type);// 高级验证
const isSafe = validateFileOrigin(url, ['cdn.example.com']);
const isSizeValid = validateFileSize(file, 10); // 10MB限制// 完整检测流程
if (isImage && isSafe && isSizeValid) {// 处理图片文件
} else if (isVideo) {// 处理视频文件
}

相关文章:

  • Linux-文件管理及归档压缩
  • Go语言爬虫系列教程4:使用正则表达式解析HTML内容
  • OPENCV的AT函数
  • 25_05_29docker
  • Windows系统工具:WinToolsPlus 之 SQL Server 日志清理
  • 数据库表中「不是 null」的含义
  • ArcGIS计算多个栅格数据的平均栅格
  • IEC 61347-1:2015 灯控制装置安全标准详解
  • 打卡第36天:模型可视化以及推理
  • React Native开发鸿蒙运动健康类应用的项目实践记录
  • 破解HTTP无状态:基于Java的Session与Cookie协同工作指南
  • 一个完整的时间序列异常检测系统,使用Flask作为后端框架,实现了AE(自编码器)、TimesNet和LSTM三种模型,并提供可视化展示
  • 八:操作系统设备管理之I/O 软件层次结构
  • 微软的新系统Windows12未来有哪些新特性
  • Redis-旁路缓存策略详解
  • Web3时代的数据保护挑战与应对策略
  • 如何流畅播放体育电竞赛事?
  • Java高效批量读取Redis数据:原理、方案与实战案例
  • Leetcode 3088. 使字符串反回文
  • AI智能体,为美业后端供应链注入“智慧因子”(4/6)
  • 大良网站建设公司/专业拓客公司联系方式
  • 网站推广方法有/网络营销课程主要讲什么内容
  • 怎么往网站里做游戏/全网模板建站系统
  • 做网站有效果吗/seo赚钱方式
  • wordpress b站视频教程/百度怎么优化网站排名
  • 重庆网站推广网络推广/互联网销售怎么做