修改文件上传MIME类型过滤规则,适配PDF、DOC、PPTX格式
代码正确性校验与优化
你的修改思路没问题,但当前代码存在语法错误,同时可以优化写法提升可维护性,具体说明如下:
一、语法问题指出
你的修改后代码(包括原代码)都存在语法错误:if语句后未用大括号包裹执行逻辑,且else的大括号位置错误,会导致JS解析报错。比如if判断完成后直接调用cb(null, true),下一行的}会被识别为多余的闭合括号,引发语法异常。
二、修正并优化后的代码
推荐用数组存储允许的MIME类型,后续添加新格式会更便捷:
const fileFilter = (req, file, cb) => { // 允许的办公文档MIME类型,可按需扩展 const allowedMimeTypes = [ 'application/msword', // .doc 'application/pdf', // .pdf 'application/vnd.openxmlformats-officedocument.presentationml.presentation', // .pptx 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', // .docx(补充支持DOCX) 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' // .xlsx(可选,如需支持Excel) ]; if (allowedMimeTypes.includes(file.mimetype)) { cb(null, true); } else { cb(null, false); } };
三、额外注意事项
- 若需要同时保留图片上传支持,只需将图片的MIME类型(
image/png、image/jpg、image/jpeg)添加到allowedMimeTypes数组即可。 - 仅通过MIME类型过滤存在安全风险(MIME可被伪造),生产环境建议结合文件扩展名校验、甚至文件内容头检测来做更严格的验证。
内容的提问来源于stack exchange,提问作者pia punya Munirah
相关产品推荐
相关产品推荐

