JSP response 대상 이 파일 다운 로드 를 실현 하 는 두 가지 방식

1.JSP 대상 response 를 포함 하여 파일 다운로드 에 대한 소개
(1)JSP 에서 파일 다운 로드 를 실현 하 는 가장 간단 한 방법 은 하이퍼링크 가 대상 자원 을 가리 키 는 것 을 정의 하 는 것 이다.사용 자 는 하이퍼링크 를 클릭 한 후에 자원 을 직접 다운로드 하지만 자원 의 URL 을 직접 노출 하 는 것 이다.
또한 일부 부정적인 영향 을 가 져 올 수 있다.예 를 들 어 다른 사이트 에 의 해 체인 을 훔 치기 쉬 워 서 로 컬 서버 의 다운로드 부하 가 너무 무겁다.
(2)또 다른 파일 을 다운로드 하 는 방법 은 파일 출력 흐름 을 이용 하여 다운 로드 를 실현 하 는 것 이다.먼저 response 헤 더 를 통 해 클 라 이언 트 브 라 우 저 에 알 리 고 받 은 정 보 를 따로 저장 하 는 것 이다.
파일 을 위 한 다음 에 출력 스 트림 대상 으로 클 라 이언 트 에 파일 데 이 터 를 전송 합 니 다.브 라 우 저 는 데 이 터 를 받 은 후에 데 이 터 를 파일 로 저장 합 니 다.이러한 다운로드 방법의 장점 은 서버 입 니 다.
무기 단 자원 경로 의 보안 이 좋 고 다운로드 의 데이터 와 로그 등록 등 을 제어 할 수 있 습 니 다.
2.다음은 두 가지 파일 의 다운로드 방식 을 소개 한다.
(1)바 이 너 리 파일 다운로드
JSP 프로그램 으로 바 이 너 리 파일 을 다운로드 하 는 기본 원 리 는 먼저 원본 파일 을 바이트 입력 스 트림 대상 으로 밀봉 하고 이 대상 을 통 해 파일 데 이 터 를 읽 어 response 대상 을 가 져 오 는 것 입 니 다.
의 바이트 출력 흐름 대상 은 출력 흐름 대상 을 통 해 바 이 너 리 바이트 데 이 터 를 클 라 이언 트 에 전송 합 니 다.
1.원본 파일 을 바이트 입력 스 트림 대상 으로 밀봉
2.바 이 너 리 바이트 데 이 터 를 읽 고 클 라 이언 트 에 전송
코드 는 다음 과 같 습 니 다:

<%@ page contentType="application/x-download" import="java.io.*" %> 
<% 
int status=0; 
byte b[]=new byte[1024]; 
FileInputStream in=null; 
ServletOutputStream out2=null; 
try 
{ 
response.setHeader("content-disposition","attachment; filename=d.zip"); 
in=new FileInputStream("c:\\tomcat\\webapps\\ROOT\\d.zip"); 
out2=response.getOutputStream(); 
while(status != -1 ) 
{ 
status=in.read(b); 
out2.write(b); 
} 
out2.flush(); 
} 
catch(Exception e) 
{ 
System.out.println(e); 
response.sendRedirect("downError.jsp"); 
} 
finally 
{ 
if(in!=null) 
in.close(); 
if(out2 !=null) 
out2.close(); 
} 
%>
(2)텍스트 파일 다운로드
텍스트 파일 을 다운로드 할 때 바이트 흐름 이 아 닌 문자 흐름 을 사용 합 니 다.먼저 원본 파일 의 문자 입력 스 트림 대상 을 가 져 오고 자바.io.FileReader 클래스 로 패키지 합 니 다.
FileReader 대상 을 java.io.BufferedReader 로 봉 하여 텍스트 파일 에서 한 줄 을 쉽게 읽 을 수 있 도록 합 니 다.문자 출력 흐름 은 JSP 의 숨 김 을 직접 사용 합 니 다.
대상 out,out 을 포함 하여 문자 데 이 터 를 출력 할 수 있 습 니 다.
코드 는 다음 과 같 습 니 다:

<%@ page contentType="application/x-download" import="java.io.*" %><% 
int status=0; 
String temp=null; 
FileReader in=null; 
BufferedReader in2=null; 
try 
{ 
response.setHeader("content-disposition","attachment; filename=ee.txt"); 
response.setCharacterEncoding("gb2312"); 
in=new FileReader("c:\\tomcat\\webapps\\ROOT\\ee.txt"); 
in2=new BufferedReader(in); 
while((temp=in2.readLine()) != null ) 
{ 
out.println(temp); 
} 
out.close(); 
} 
catch(Exception e) 
{ 
System.out.println(e); 
response.sendRedirect("downError.jsp"); 
} 
finally 
{ 
if(in2!=null) 
in2.close(); 
} 
%>

좋은 웹페이지 즐겨찾기