const AWS = require('aws-sdk')
const multerS3 = require('multer-s3')
AWS.config.update({
region: 'ap-northeast-2',
accessKeyId: '',
secretAccessKey: ''
})
const upload = multer({
storage: multer.diskStorage({
destination(req, file, done) {
// null은 서버에러, 뒤에는 성공 시 uploads폴더에 저장하겠다. => S3에도 가능
done(null, "uploads");
},
filename(req, file, done) {
// 확장자 추출
const ext = path.extname(file.originalname);
// 파일명.png, ext === .png, basename === 파일명
const basename = path.basename(file.originalname, ext);
// 파일명이 같으면 덮어씌어지기 때문에 시간을 추가해줌
done(null, basename + new Date().valueOf() + ext);
},
}),
limits: { fileSize: 20 * 1024 * 1024 },
});
위의 코드를 S3에 업로드 하기위해 아래와 같이 바꿨다.
const upload = multer({
storage: multer.multerS3({
s3: new AWS.S3(),
bucket: 'bathingape-nodebird',
key(req, file, cb) {
cb(null, `original/${+new Date()}${path.basename(file.originalname)}}`)
}
}),
limits: { fileSize: 20 * 1024 * 1024 },
});