multer 上的 fileFilter 仍然允许所有文件类型
Posted
技术标签:
【中文标题】multer 上的 fileFilter 仍然允许所有文件类型【英文标题】:fileFilter on multer still allowing all file types 【发布时间】:2020-11-29 18:51:16 【问题描述】:在我的存储功能中添加了一个文件过滤器,只允许上传图像文件类型,但所有文件类型仍在上传中。
var storage = multer.diskStorage(
destination: function (req, file, cb)
cb(null, 'uploads/profilePictures')
,
filename: function (req, file, cb)
cb(null, `$Date.now()_$file.originalname`)
,
fileFilter: (req, file, cb) =>
const ext = path.extname(file.originalname).toLower()
if (ext !== '.jpg' || ext !=='.png' || ext !== '.jpeg')
return cb(res.status(400).end('Error only photos can be uploaded'), false);
cb(null,true)
)
var upload = multer( storage: storage ).single("file")
【问题讨论】:
这能回答你的问题吗? Filter files on the basis of extension using Multer in Express JS 【参考方案1】:这是一种使用正则表达式的方法:
fileFilter: (req, file, cb) =>
const filetypes = /jpeg|jpg|png|gif/;
const extname = filetypes.test(path.extname(file.originalname).toLowerCase());
const mimetype = filetypes.test(file.mimetype);
if (mimetype && extname) return cb(null, true);
else cb("Error: Images Only!");
【讨论】:
以上是关于multer 上的 fileFilter 仍然允许所有文件类型的主要内容,如果未能解决你的问题,请参考以下文章
如何允许 fs 和 multer 在 AWS EC2 上写入文件