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();
}
%>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C#HttpWebRequest, HttpWebResponse 아날로그 브라우저를 사용하여 웹 내용을 캡처하는 방법텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.