如何仅使用multerS3将文件类型限制为图像?

问题描述

我已经能够使用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,});