我一直在尝试使用Multer上传两个不同的文件(图像和pdf),但我无法弄清楚如何操作fileFilter中的文件。我想检查文件类型和大小 - 哪个有效,然后获取pdf文件并将其存储在磁盘上,同时图像文件继续处理另一个处理图像处理的函数。 我是新手,并尝试了很多指南,但没有这些指南显示了这种情况。
提前感谢您的帮助。
Multer和路由器的代码。它仍然有点粗糙所以请耐心等待。
// multer configuration
const upload = multer({
storage: multer.memoryStorage(),
fileFilter (req, files, callback) {
const ext = path.extname(files.originalname);
if (ext !== '.png' && ext !== '.jpg' && ext !== '.jpeg' && ext !== '.pdf') {
return callback(new Error('Only images and pdf files allowed'));
}
callback(null, true);
},
limits: {
fileSize: 5242880,
}
}).fields([{ name: 'main image', maxCount: 1 }, { name: 'info packs', maxCount: 1 }]);
// router
router.post('/', upload, controller.addNewImage);enter code here
答案 0 :(得分:0)
我认为这没关系:
const upload = multer({
storage: multer.memoryStorage(),
fileFilter (req, files, callback) {
const ext = path.extname(files.originalname);
const allowed = ['.png', '.jpg', '.jpeg', '.pdf'];
if (allowed.includes(ext)) {
callback(null, true);
} else {
callback(null, false); // handle error in middleware, not here
}
},
limits: {
fileSize: 5242880,
}
}).fields([{ name: 'main image', maxCount: 1 }, { name: 'info packs', maxCount: 1 }]);