multer-s3 upload오류
this.client.send is not a funtion
이미지 업로드를 시도하던 중 계속해서 해당 오류가 발생하고 있었다.
구글링 하여 원인을 찾아보니 aws-sdk
이랑 multer-s3
버전이 달라서 호환성이 맞지 않아 발생하는 문제인 것 같았다.
디펜던시를 확인해보니 깔려있는 multer-s3의 버전은 3.xx버전이고, aws-sdk는 2.xx버전이였다.
npm i multer-s3@^2
multer-s3의 버전을 2.xx버전으로 맞춰준 뒤 실행해보니 성공적으로 업로드가 되었다.
S3 객체 업로드 미들웨어
const upLoadImg = multer({
storage: multerS3({
s3: s3,
bucket: process.env.S3_BUCKET_NAME,
key: (req, file, callback) => {
const uploadDirectory = req.query.directory ?? ''; // 업로드할 디렉토리 설정
const extension = path.extname(file.originalname).toLowerCase();
const fileMimetype = file.mimetype.toLowerCase();
if (!allowedExtensions.includes(extension) || !mimeType.includes(fileMimetype)) {
return callback(new Error('업로드가 불가능한 확장자입니다.'));
}
callback(null, `${uploadDirectory}/${Date.now()}_${file.originalname}`);
},
acl: 'public-read-write',
contentType: multerS3.AUTO_CONTENT_TYPE, // 파일의 Content-Type 자동 설정
metadata: (req, file, callback) => {
callback(null, { fieldName: file.fieldname });
},
}),
});
S3 사용을 처음하다보니 구글링을 통해 예시들을 참고하면서 코드를 작성했다.