2

在我的存储功能中添加了一个文件过滤器,仅允许上传图像文件类型,但仍在上传所有文件类型。

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")
4

1 回答 1

0

这是使用正则表达式的一种方法:

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!");
}
于 2020-08-10T09:44:23.970 回答