아래 샘플을 참고 하자.
/**
* 파일 명 생성
*
* @param fileName
* @param request HttpServletRequest
* @param response HttpServletResponse
* @throws UnsupportedEncodingException
*/
private void setDownloadFileName(String fileName, HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
fileName = URLEncoder.encode(fileName, "utf-8").replaceAll("\\+", "%20");
if (logger.isDebugEnabled()) {
logger.debug("fileName: " + fileName);
}
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\";");
response.setHeader("Content-Transfer-Encoding", "binary");
}
URLEncoder 를 사용하여 encode 한다. 파일 다운로드 시 공백이 + 로 표현 되기 때문에 replaceAll 을 사용하여 추가로 변환 하면 해결 된다.
참고 사이트