/** * 判断文件名是否为图片 * @param {string} filename 完整文件名(含路径和扩展名) * @returns {boolean} 是否为图片 */ const IMAGE_EXTENSIONS = new Set([ "jpg", "jpeg", "png", "gif", "bmp", "svg", "webp", "tiff", "psd", "ico", "jfif", "apng", "avif", ]); export function isImage(filename) { // 1. 去除路径,只保留文件名 const baseName = filename.split("/").pop().split("\\").pop(); if (!baseName) return false; // 2. 提取扩展名(处理多扩展名,取最后一个) const ext = baseName.split(".").pop()?.toLowerCase(); if (!ext || ext.length < 2) return false; // 扩展名长度至少2位(如.jpg) // 3. 检查是否在图片扩展名白名单 return IMAGE_EXTENSIONS.has(ext); } // 示例测试 // console.log(isImage('photo.jpg')); // true // console.log(isImage('image.png')); // true // console.log(isImage('logo.svg')); // true // console.log(isImage('cover.tar.gz')); // false(非图片扩展名) // console.log(isImage('file')); // false(无扩展名) // console.log(isImage('.hidden.png')); // true(隐藏文件) // console.log(isImage('icon.JPEG')); // true(大小写不敏感) // console.log(isImage('video.mp4')); // false(视频)