down.jsp
JSP 에서 파일을 그냥 링크하면 일부 파일의 경우
깨진 내용이 보이거나 이상하게 반응하게 된다.
특히, 한글로 된 파일의 경우 오동작이 생긴다.
이것을 해결하는 방법으로 별도의 다운로드를 담당하는
JSP를 사용해보자.
톰캣 버젼 등 환경이 다르면 오류가 발생할 수 있음 ^^;
수많은 해결 방법 중에 하나일 뿐이니 참고하기 바람.
-------------------------------------------------------
downtest.jsp : 테스트 할 간단한 파일
-------------------------------------------------------
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<form action="down.jsp" name="form1">
<% String filename = "새 텍스트 문서.txt";%>
<input type="hidden" name="file" value="<%=filename%>">
<a href="#" onClick="form1.submit()">다운로드</a>
</form>
-------------------------------------------------------
down.jsp : 다운로드를 담당하는 파일
-------------------------------------------------------
<%@ page contentType="application;" %>
<%@ page import="java.util.*,java.io.*,java.sql.*,java.text.*"%>
<%
request.setCharacterEncoding("euc-kr"); // request 한글로 설정
String filename = request.getParameter("file"); // 파일명 받기
String filename2 = new String(filename.getBytes("euc-kr"),"8859_1");
ServletContext context = getServletContext(); // 서블릿 컨텍스트 얻기
/*
예를 들어 톰캣 설치 폴더가 c:\tomcat41 이고
c:\tomcat41\webapps\test 가 웹 어플리케이션 일때
c:\tomcat41\webapps\test\filestorage 폴더에
파일을 업로드한 경우로 가정한다.
*/
String saveFolder = "filestorage";
String realFolder = "";
realFolder = context.getRealPath(saveFolder); // 상대경로(저장할 폴더)
// 자바 I/O를 이용하여 다운받는다.
File file = new File(realFolder + "/" + filename);
byte b[] = new byte[4096];
response.setHeader("Content-Disposition", "attachment;filename=" + filename2 + ";");
if (file.isFile())
{
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);
}//while
outs.close();
fin.close();
}//if
%>
'IT > Language' 카테고리의 다른 글
JDK Bit 확인 (0) | 2008.02.11 |
---|---|
[JAVA] 숫자,날짜 포메팅하는 방법 (0) | 2007.06.29 |
[JAVA] javac, java 명령어의 옵션 (0) | 2007.06.29 |
[JAVA] 숫자를 화폐단위로 변경 (0) | 2007.06.29 |
[JAVA] 날짜 구하기 팁 (0) | 2007.06.29 |