Как мне ограничить типы файлов изображениями только с помощью multerS3?

#node.js #amazon-s3 #multer #multer-s3

#node.js #amazon-s3 #мультер #multer-s3

Вопрос:

Я смог подключить свою корзину S3 к своему веб-приложению с помощью multerS3, однако я не уверен, как ограничить файлы, которые могут быть загружены только в изображения. До того, как я использовал 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,
  }),
});
  

Ответ №1:

Я идиот. Я вижу ошибку в своем коде и исправил ее. Я не должен был вводить fileFilter внутри storage настройки. Это фиксированный код:

 const upload = multer({
  storage: multerS3({
    s3: s3,
    acl: 'public-read',
    bucket: 'BUCKET NAME',
    contentType: multerS3.AUTO_CONTENT_TYPE,
  }),
  fileFilter: multerFilter,
});
  

Комментарии:

1. ContentType: multerS3.AUTO_CONTENT_TYPE, спасибо,