📅  最后修改于: 2023-12-03 15:03:03.873000             🧑  作者: Mango
当使用 Multer 中间件来处理文件上传时,我们可能会遇到 fileFilter 不起作用的问题。这个问题通常可以分为以下两种情况:
如果文件上传并未执行,可能是因为 Multer 中间件未正确指定存储方式。确保以下代码中的 dest 属性已正确设置为所需的存储路径:
const multer = require('multer');
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/')
},
filename: function (req, file, cb) {
cb(null, file.originalname);
}
});
const upload = multer({ storage: storage });
app.post('/upload', upload.single('file'), (req, res) => {
res.send("File uploaded successfully");
});
如果文件上传执行了,但是 fileFilter 未按预期工作,可能是因为以下代码中的 fileFilter 函数未正确实现过滤逻辑:
const multer = require('multer');
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/')
},
filename: function (req, file, cb) {
cb(null, file.originalname)
}
});
const fileFilter = function (req, file, cb) {
if (file.mimetype !== 'image/png') {
cb(new Error('File type is not allowed'));
} else {
cb(null, true);
}
};
const upload = multer({ storage: storage, fileFilter: fileFilter });
app.post('/upload', upload.single('file'), (req, res) => {
res.send("File uploaded successfully");
});
请确保该函数正确实现了所需的过滤逻辑。在上面的示例中,我们过滤了所有非 PNG 类型的文件。
希望这些提示能帮助你解决 Multer fileFilter 不起作用问题。