JSP

JSP 한글파일명 다운로드 기능 구현 방법

bang2001 2013. 8. 1. 17:28

JSP에서 파일다운로드 기능을 구현하실 때 한글파일명으로 다운받을 수 있게끔 해야 될 때가 있습니다. 아니, 어쩌면 한글 파일명으로 다운받을 수 있도록 해야하는 경우가 상당히 많을 것입니다. 사용자 입장에서 봐도, 자신이 업로드한 파일명 그대로 다운받아지길 원할테고, 자신이 업로드한 파일이 아니더라도 한글로 받아서 볼 수 있도록 원할것입니다.


그런데 아래와 같이 JSP에서 단지 다운로드 되는 파일명을 한글로 지정한다고 해서 한글파일명으로 다운로드가 되지 않습니다.


response.setContentType("application/octer-stream");

response.setHeader("Content-Transper-Encoding", "binary");

response.setHeader("Content-Disposition", "attachment;filename=한글파일.txt");


위와 같은 형식으로 구현한다면, 아마도 다운로드 되는 파일명의 텍스트가 깨지는 현상이 발생할 것입니다. 


그렇다면 어떻게 해야 할까요? 이러한 문제를 해결하는 방법으로는 파일명을 URL인코더로 인코딩 하는 방법이 있습니다. 아래 소스코드가 바로 URL인코더로 인코딩하는 소스코드입니다.



String filename = "한글파일명";

String ext = ".txt";


filename = java.net.URLEncoder.encode(filename, "UTF-8");


response.setContentType("application/octer-stream");

response.setHeader("Content-Transper-Encoding", "binary");

response.setHeader("Content-Disposition", "attachment;filename="+filename+ext);



위와 같이 java.net.URLEncoder 클래스의 encode() 메소드를 통해서 다운로드 되는 파일명을 한글로 지정할 수 있습니다.


Java API Doc : http://docs.oracle.com/javase/7/docs/api/java/net/URLEncoder.html