【发布时间】:2020-04-03 12:50:37
【问题描述】:
我正在使用 multer 作为快速中间件来上传文件,如下所示:
const upload = multer().single('fieldName');
router.post(
'/',
upload,
(req, res) => {
console.log(req.file)
}
);
它工作正常,除非我发送没有文件的表单。然后显然只是跳过了上传中间件,req.file 是undefined。
我尝试像这样添加过滤器,但显然没有文件时不会调用过滤器函数:
function fileFilter(req, file, cb) {
console.log('filtering'); //never reached when file is missing
if (!file) {
return cb(new Error('no file', false));
}
cb(null, true);
}
const upload = multer({fileFilter: fileFilter}).single('fieldName');
router.post(...)
有什么方法可以处理 multer 中间件中丢失的文件?还是我必须事后检查?
【问题讨论】:
-
尝试添加一个中间件来验证 multer() 执行后文件是否存在。示例:gist.github.com/sayhicoelho/f6e2c076a9069b929e07c4e21b768850