한글 파일명 다운로드
private String getBrowser(HttpServletRequestrequest) {
String header =request.getHeader("User-Agent");
if (header.contains("MSIE")) {
return "MSIE";
} else if(header.contains("Chrome")) {
return "Chrome";
} else if(header.contains("Opera")) {
return "Opera";
}
return "Firefox";
}
String header = getBrowser(request);
if (header.contains("MSIE")) {
String docName = URLEncoder.encode(fileName,"UTF-8").replaceAll("\\+", "%20");
response.setHeader("Content-Disposition", "attachment;filename=" + docName + ";");
} else if (header.contains("Firefox")) {
String docName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
response.setHeader("Content-Disposition", "attachment; filename=\"" + docName + "\"");
} else if (header.contains("Opera")) {
String docName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
response.setHeader("Content-Disposition", "attachment; filename=\"" + docName + "\"");
} else if (header.contains("Chrome")) {
String docName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
response.setHeader("Content-Disposition", "attachment; filename=\"" + docName + "\"");
}
response.setHeader("Content-Type", "application/octet-stream");
response.setContentLength((int)file.getSize());
response.setHeader("Content-Transfer-Encoding", "binary;");
response.setHeader("Pragma", "no-cache;");
response.setHeader("Expires", "-1;");




덧글
다만, IE Edge에서 테스트 해보니 브라우저를 크롬으로 인식하네요.
크롬에서 파일 다운로드 하면 한글이 잘 나오는데 IE Edge에서 파일 다운로드 하면 한글이 깨져서 나옵니다.
왜 IE Edge를 크롬으로 인식하는지 확인이 필요할것 같습니다.
브라우저 분류할 때
header.contains("MSIE") || header.contains("Trident")
이렇게 사용하면 잘되네요
정말 감사합니다!