티스토리 뷰
파일 다운로드 시 보통 다음과 같은 로직을 구현한다.
...
response.reset();
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\";");
response.setHeader("Content-Length", String.valueOf(destFile != null ? destFile.length() : 0));
...
이렇게 했을 때 4번째줄에 나오는 fileName은 클라이언트로부터 넘어온 파일의 정보 중 파일이름이다.
파일 이름을 추출하여 Content-Disposition 값으로 그대로 넣으면 한글 파일이라면 깨진 파일이름으로 다운이 된다.
이 경우에는 다음과 같이 fileName을 인코딩 처리 해줘야 한다.
fileName = URLEncoder.encode(fileName, "UTF-8");
이렇게 했을때 정상적으로 출력이 되는것을 확인할 수 있다.
끝!
'Lang > Java' 카테고리의 다른 글
JDK11 to JDK17 migration point & features (0) | 2022.05.31 |
---|---|
make field(List or Map) transient or serializable 조치 (0) | 2022.02.08 |
[Java] java.io.IOException: Stream Closed 오류 조치 (1) | 2022.01.20 |
try-with-resources 사용하여 resource 관리 쉽게 하는 방법 (0) | 2022.01.12 |
hs_err_pid 파일은 언제 왜 생성이 되는것일까? (0) | 2021.11.29 |
댓글