간단하게 정리한 파일 다운로드시 한글깨짐 현상 방지방법 입니다.
먼저 한글명을 URL인코더를 통해서 인코딩 해 줍니다.
* 자바파일
import java.net.URLEncoder;
{
public String convertFileName(String fileName) { //한글파일 이름을 받아서
try {
fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20"); //인코딩!
} catch (Exception e) {
e.printStackTrace();
}
return fileName;
}
}
자바에서 URLEncoder 클래스는 일반 문자열을 웹에서 통용되는 'x-www-form-urlencoded' 형식으로 변환하는 역할을 담당 합니다.
이렇게 인코딩을 해 준 다음에 다운받는 페이지(js, jsp, html 및 php 등)에서 파일 이름을 받는 곳 에서 디코딩을 해 줍니다.
아래처럼 헤더 부분에 filename 이라는 값으로 인코딩한 파일 이름을 넣어주고,
받는 스크립트 파일에서는 아래처럼 decodeURI라는 window 함수를 실행하여 헤더부분의 이름을 변환하여 줍니다.
아래는 ajax로 만든 샘플코드 입니다.
$.ajax({
url: '주소',
cache: false,
xhrFields: {
responseType: "blob",
},
success: function (data, status, xhr) {
let fileName = decodeURI(xhr.getResponseHeader("filename")); //요런 느낌?
}
});
요걸 실행해본 모습입니다.
아래처럼 서버에서는 한글파일을 인코딩해주고..
브라우저에서는 받은 파일 이름은 디코드 해 줍니다.
간단하게 정리해본 한글 이름으로 되어있는 파일을 다운로드 받을 때 깨지는 현상을 방지하는 방법이였습니다.
궁금한점 또는 틀린 부분은 언제든 연락주세요!
* 왠지 예전에 정리했던거 같은..데..
반응형
'Spring framework' 카테고리의 다른 글
MongoDb Maven build 오류(JSONObject, JSONArray) (0) | 2023.02.02 |
---|---|
전자정부프레임워크 4.1.0 사용 후기 (0) | 2022.12.30 |
Mybatis 에서 트랜젝션(commit, rollback) 수동 사용하기(SqlSessionFactory, TransactionFactory) (0) | 2022.12.12 |
[Spring] could not install class webappstructureserializer (3) | 2022.12.01 |
전자정부프레임워크 4.0.0 사용 후기 (8) | 2022.08.26 |
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)
댓글