Download.jsp(다운로드 jsp) 한글파일 다운로드 받기
흑흑 쌩고생을 하면서 만든것 ㅡㅡ 비스타 IE7에서는 잘 돌아가지만 XP에서는 파일이 안받아 지는 경우가 있다 이는 소스 문제가 아니라 익스플로러 문제이다 이거때문에 고생에 고생을 거듭 이에 대한 해결방법은 자신의 컴퓨터의 설정을 바꿔주는 것이다 --해결방법-- 1. 제어판으로 이동해라 2. 제어판의 국가 및 언어옵션을 선택을 해라. 3. 국가 및 언어옵션 탭중에 언어탭을 선택하고 자세히라는 버튼을 클릭. 4. 텍스트 서비스 및 입력언어창이 나타날것이다 그러면 탭중 고급을 클릭. 5. 고급텍스트서비스 사용안함에 체크 후 창을 닫으면 된다.. 6. 적용버튼이 있었나?? 하여튼 그렇게 하면 해결된다 download.jsp <%@ page contentType="text/html; charset=MS949"%> //MS949 이가 꼭 있어야 할듯 한데 잘 모름 <% String filePath1 = request.getParameter("file"); //파일명을 가지고 온다 String filePath = new String(filePath1.getBytes("8859_1"), "KSC5601"); //가지고 온 파일명을 한글도 받을 수있게 변환한다 String path = "파일이 있는 폴더까지 절대경로를 줘라"+filePath; (ex. 원도우경우 c:\programfile\download\ 유닉스 /export/home/download 리눅스 /root/home/download) response.setContentType("application/octet-stream"); String Agent=request.getHeader("USER-AGENT"); //브라우져의 버젼을 알 수있다 흐흐 byte b[] = new byte[1024]; if (file.isFile()){ out.clear(); fin.close(); %>
<%@page import="java.io.*,java.util.*,java.net.*" %>
request.setCharacterEncoding("euc-kr");
//업로드된 파일명 추출
int imgIdx = filePath.lastIndexOf("/");
String fileName = filePath.substring(imgIdx+1);
File file = new File(path);
if(Agent.indexOf("MSIE")>=0){
int i=Agent.indexOf('M',2);//두번째 'M'자가 있는 위치
String IEV=Agent.substring(i+5,i+8);
if(IEV.equalsIgnoreCase("5.5")){
// filename은 순수한 파일명만
response.setHeader("Content-Disposition", "filename="+new String(fileName.getBytes("euc-kr"),"8859_1"));
}
else{
response.setHeader("Content-Disposition", "attachment;filename="+new String(fileName.getBytes("euc-kr"),"8859_1"));
}
}
else{
response.setHeader("Content-Disposition", "attachment;filename="+new String(fileName.getBytes("euc-kr"),"8859_1"));
}
try {
BufferedInputStream fin = new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream outs = new BufferedOutputStream(response.getOutputStream());
int read = 0;
while ((read = fin.read(b)) != -1){
outs.write(b,0,read);
}
outs.flush();
outs.close();
}
catch(Exception e){
e.printStackTrace();
}
}