AWS S3 multer

박동건·2020년 7월 2일
0

TIL(2020)

목록 보기
42/49

Today I Learn...

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 },
});
profile
박레고의 개발 블로그

0개의 댓글