Multer - 한글 깨짐

NuJey·2025년 4월 8일

🔤 Multer에서 한글 파일명이 깨질 때

NestJS, Express 등에서 Multer를 사용해 파일 업로드 기능을 구현할 때,
한글로 된 파일명을 업로드하면 다음과 같이 문자가 깨지는 문제를 겪을 수 있다.

예를 들어, 클라이언트에서 한글파일명.jpg를 업로드했을 때
file.originalname 값이 다음처럼 출력될 수 있다:


🧨 왜 이런 문제가 발생할까?

이 문제는 인코딩 방식의 불일치 때문에 발생한다.

  • 브라우저는 일반적으로 UTF-8로 파일명을 전송한다.
  • 그러나 Multeroriginalname을 디코딩할 때 latin1(ISO-8859-1) 방식으로 처리한다.

결국 UTF-8 인코딩된 문자열을 latin1로 잘못 해석해서 문자가 깨져버리는 것!


✅ 해결 방법

깨진 문자열을 복구하려면, 다시 버퍼로 변환해서 UTF-8로 재해석하면 된다.

const fixedFileName = Buffer.from(file.originalname, 'latin1').toString('utf8');

💡 정리

Multer는 originalname을 latin1로 해석한다.

한글이 깨진다면, Buffer.from(..., 'latin1').toString('utf8')으로 복원하자.

파일명 로깅이나 S3 Key 생성 시 꼭 이 처리 과정을 거치는 걸 추천!

🧾 참고

0개의 댓글