728x90
반응형
JAVA 개발 후 첨부파일을 다운로드 할 경우 공백이 '+' 로 바뀌어 다운로드되는 현상이 있습니다.
예를들어 "첨부파일 다운로드 테스트.rtf"라는 파일이라면 "첨부파일+다운로드+테스트.rtf"라는 파일로 저장이 됩니다.
원인은 한글 파일명을 지원히기 위해 URLEncoder를 사용하는데 이 함수가 공백을 '+'로 만듭니다.
String fileName = "첨부파일 다운로드 테스트.rtf";
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8") + ";");
'+'기호를 개선하는 방법은 URLEncoding 후 '+'로 변경된 공백을 '%20' 으로 다시 변경합니다.
'+'는 정규식의 수량을 나타내는 것이기 때문에 역슬래쉬가 앞에 붙어야 합니다.
공백 '+' 없애기
String fileName = "첨부파일 다운로드 테스트.rtf";
fileName = URLEncoder.encode(fileName, "UTF-8");
fileName = fileName.replaceAll("\\+", "%20");
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ";");
728x90
반응형
'JAVA' 카테고리의 다른 글
JAVA 무한루프 (0) | 2022.06.22 |
---|---|
이클립스 Branches/Tag 활용하기 (0) | 2022.05.10 |
The method getTextContent() is undefined for the type (0) | 2021.11.25 |
아파치 POI 이미지 삽입 (0) | 2021.11.25 |
아파치 POI 페이지나누기 (0) | 2021.11.24 |
댓글