짹뚜 스튜디오

[NodeJS] multer 미들웨어로 이미지 업로드 하기 본문

개발 공부/백엔드

[NodeJS] multer 미들웨어로 이미지 업로드 하기

짹뚜 2022. 10. 7. 16:07
서버에 이미지를 업로드하기 위해 사용하는 multipart/form-data 형식을 처리하기 위해 multer 미들웨어를 사용한다.

설치

npm install multer

사용법

먼저 multer를 변수에 저장해준다.

const upload = multer({
  storage: multer.diskStorage({
    destination: (req, file, callback) => {
        callback(null, "./uploads");
    },
    filename: (req, file, callback) => {
      const fileName = Date.now() + ext;
      callback(null, fileName);
    },
  }),
  limits: { fileSize: 10 * 1024 * 1024 },
});
  • storage property로 이미지 파일이 저장되는 위치와 이름을 지정해줄 수 있다.
  • limits property로 업로드되는 이미지 파일의 최대 크기를 지정할 수 있다. 위 코드에서는 10mb 크기의 이미지로 제한했다.
router.post("/", upload.single("img"), async (req, res) => { 
	const imgFile = req.file; 
    ...
});

위 코드에서 middleware로 upload.single('img')를 통해서 하나의 파일을 업로드한다. 인자 값으로 전달하는 String은 multipart/form-data로 보내지는 데이터의 key 값과 동일한 값이다.


만약 여러 개의 파일을 업로드하는 경우에는 upload.fields([{ name: 'img' }, { name: 'img2' }]) 형태로 사용해야 한다.

Comments