如何使用multer-s3转换图像?

问题描述

我正在尝试调整图像的大小,然后再将其上传到Amazon S3。我找到了有关如何实现此目的的文档,但是我怀疑自己的实现不正确。我包括下面的代码。我在做什么错了?

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: 'BUCKETNAME',contentType: multerS3.AUTO_CONTENT_TYPE,}),fileFilter: multerFilter,shouldTransform: function (req,cb) {
    cb(null,/^image/i.test(file.mimetype));
  },transforms: [
    {
      id: 'original',key: function (req,cb) {
        cb(null,'image-original.jpg');
      },transform: function (req,sharp().resize(100,100).jpg());
      },},],});

解决方法

我能够弄清楚这一点。下面的代码可以使用npm的multer-s3-image-transform进行工作。

const upload = multer({
  storage: multerS3({
    s3: s3,acl: 'public-read',bucket: 'BUCKETNAME',contentType: multerS3.AUTO_CONTENT_TYPE,transforms: () =>
      sharp().resize(250,250).jpeg({
        progressive: true,quality: 80,}),fileFilter: multerFilter,});