anacronw / multer-s3

multer storage engine for amazon s3
MIT License
660 stars 190 forks source link

[v3.0.0] Update S3Storage.prototype._removeFile to use DeleteObjectCommand #171

Closed Reckonyd closed 2 years ago

Reckonyd commented 2 years ago

Environment: Docker Container Localstack version: 0.14.3 MulterS3 version: 3.0.0 AWS SDK version: 3.100.0 S3 Client generation:

export function generateS3Client() {
  return new S3Client({
    credentials: {
      accessKeyId: 'test-key',
      secretAccessKey: 'test-key-secret',
    },
    endpoint: 'http://localstack:4566',
    region: 'eu-central-2',
    forcePathStyle: process.env.NODE_ENV !== 'production',
  });
}

After testing the rejection of a file I received the following error:

/usr/src/server/node_modules/multer-s3/index.js:244
  this.s3.deleteObject({ Bucket: file.bucket, Key: file.key }, cb)
          ^
TypeError: this.s3.deleteObject is not a function
    at S3Storage._removeFile (/usr/src/server/node_modules/multer-s3/index.js:244:11)
    at remove (/usr/src/server/node_modules/multer/lib/make-middleware.js:66:19)
    at handleFile (/usr/src/server/node_modules/multer/lib/remove-uploaded-files.js:10:5)
    at removeUploadedFiles (/usr/src/server/node_modules/multer/lib/remove-uploaded-files.js:25:3)
    at Counter.<anonymous> (/usr/src/server/node_modules/multer/lib/make-middleware.js:69:9)
    at Object.onceWrapper (node:events:641:28)
    at Counter.emit (node:events:527:28)
    at Counter.decrement (/usr/src/server/node_modules/multer/lib/counter.js:15:32)
    at /usr/src/server/node_modules/multer/lib/make-middleware.js:149:34
    at /usr/src/server/node_modules/multer-s3/index.js:224:7

This is caused by the now removed S3 deleteObject function.

A possible solution:

import { DeleteObjectCommand } from '@aws-sdk/client-s3';

S3Storage.prototype._removeFile = function (req, file, cb) {
   this.S3Client.send(
    new DeleteObjectCommand({
      Bucket: file.bucket,
      Key: file.key,
    }),
    cb,
  );
};
LinusU commented 2 years ago

Nice catch 👍

Would you be willing to submit a pull request?

Reckonyd commented 2 years ago

Of course!

LinusU commented 2 years ago

Fixed in 🚢 3.0.1 / 2022-05-31