1 回答
TA贡献1796条经验 获得超10个赞
我认为我们可以通过一些调整来使其发挥作用。我已经进行了这些更改并用一些图像进行了测试。
您的用户控制器看起来会有点不同,但类似的东西应该可以工作。
我已经更新为将任何文件太大错误传递给控制器,这将再次出现在 req.uploadError 属性中,因此您可以根据需要进行处理。
const userController = {
uploadFile(req, res) {
if (req.uploadError) {
res.status(400).send("An error occurred - " + req.uploadError.message);
} else {
res.status(201).send("All good");
}
}
}
var storage = multer.diskStorage({
destination(req, file, cb) {
cb(null, url);
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname))
}
});
let upload = multer({
storage: storage,
limits: { fileSize: maxSize },
fileFilter: (req, file, cb) => {
console.log(file);
if (file.mimetype !== 'image/jpeg' && file.mimetype !== 'image/png') {
cb(new Error('Only jpeg or png images allowed'));
} else {
cb(null, true);
}
}
}).single('file');
routes.post('/fileupload', (req, res, next) => {
upload(req, res, err => {
req.uploadError = err;
next();
})
}, userController.uploadFile);
添加回答
举报