Backend/JavaScript,NodeJS, Express

[NodeJS] Multer 와 S3로 이미지 처리하기

jellylucy 2022. 4. 28. 13:19

multer를 사용해 이미지를 업로드 및 폼데이터를 처리할 수 있다. 

 

기본적인 multer 사용법 정리 

1. router 사용법

콜백함수 (req, res) 전에, upload.single('img') 미들웨어를 사용한다. 

 

router.post('/', upload_resize.single('img'), async (req, res) => {

    user_id = req.body.user_id;
    imgpath = req.file.location;

});

2. 이미지 저장 : 디스크가 아닌 S3에 저장하기 

디스크에 있는 파일을 업로드하거나 파일 버퍼(메모리에 저장)하는 두가지 방법이 있다. 

디스크 방식은 번거롭기 때문에,

메모리에 파일을 버퍼형식으로 저장하고, 그것을 업로드한다. 

const upload = multer({
  storage: multer.memoryStorage(),
});

메모리 스토리지를 쓸 경우는

req.file, req.files안의 파일 데이터 객체에 디스크스토리지 전용속성은 destination, filename, path 대신

buffer 라는 속성이 새로 생기고 그 값으로 버퍼들이 저장된다. 

이 버퍼를 사용해서 s3에 버퍼로 업로드하면 된다.