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