포시코딩

[multer] 한글 깨짐 현상 해결 방법 본문

Node.js

[multer] 한글 깨짐 현상 해결 방법

포시 2023. 1. 4. 15:31
728x90

문제 발생

multer를 이용해 이미지 저장까진 잘 진행했는데

파일명이 한글일 경우 인코딩이 깨지는 현상을 발견했다.

 

multer를 사용하는 모습

// ...생략

const multer = require("multer");
const moment = require("moment");
const storage = multer.diskStorage({
  destination: "./src/public/uploads/orders",
  filename: function(req, file, cb) {
    cb(null, moment().format("YYYYMMDDHHmmss") + "_" + file.originalname);
  }
});

router.post('/', authMiddleware, multer({ storage: storage }).array("files"), ordersController.createOrder);

// ... 생략

 

해결 방법

구글링 해서 나오는 multer의 버전을 낮추라느니 

요청 보낼 때 'Content-Type': 'charset=UTF-8'을 주라느니 다 개소리고 아래처럼 하면 된다.

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

위 코드를 사진처럼 추가하면 다른 추가 설정 없이 한글로 이미지가 받아지는 것을 확인할 수 있다.

 

 

 

 

도움받은 곳

https://github.com/expressjs/multer/issues/1104

 

Issue with UTF-8 characters in filename · Issue #1104 · expressjs/multer

Hi, I found recently that something changed regarding the handling of filename containing utf-8 characters; they seem to be passed as-is, which was not the case before. After investigating a bit I ...

github.com

728x90