问题描述
我已经能够使用multerS3将S3存储桶连接到Web应用程序,但是,我不确定如何限制只能上传到图像的文件。在使用S3之前,我使用multerFilter来检查mime类型,并且可以正常工作。但是,现在,使用相同的代码,似乎任何类型的文件都将上传到我的S3存储桶。使用multerS3将文件类型限制为图像的最佳方法是什么?谢谢。
const multerFilter = (req,file,cb) => {
if (file.mimetype.startsWith('image')) {
cb(null,true);
} else {
cb(new AppError('Not an image! Please upload images only.',400),false);
}
};
const upload = multer({
storage: multerS3({
s3: s3,acl: 'public-read',bucket: 'BUCKET NAME',contentType: multerS3.AUTO_CONTENT_TYPE,fileFilter: multerFilter,}),});
解决方法
我是个白痴。我在代码中看到错误,并已修复。我不应该将fileFilter
放在storage
设置中。这是固定代码:
const upload = multer({
storage: multerS3({
s3: s3,acl: 'public-read',bucket: 'BUCKET NAME',contentType: multerS3.AUTO_CONTENT_TYPE,}),fileFilter: multerFilter,});