1. 程式人生 > >JSP程式中response物件實現檔案下載的兩種方式

JSP程式中response物件實現檔案下載的兩種方式

  這篇文章主要介紹了JSP隱含物件response實現檔案下載的兩種方法,很簡單,但很實用,需要的朋友可以參考下。

  一.JSP隱含物件response實現檔案下載的介紹

  (1)在JSP中實現檔案下載最簡單的方法是定義超連結指向目標資源,使用者單擊超連結後直接下載資源,但直接暴露資源的URL

  也會帶來一些負面的影響,例如容易被其它網站盜鏈,造成本地伺服器下載負載過重。

  (2)另外一種下載檔案的方法是使用檔案輸出流實現下載,首先通過response報頭告知客戶端瀏覽器,將接收到的資訊另存

  為一個檔案,然後用輸出流物件給客戶端傳輸檔案資料,瀏覽器接收資料完畢後將資料另存為檔案,這種下載方法的優點是服

  務器端資源路徑的保密性好,並可控制下載的流量以及日誌登記等。

  二.以下介紹兩種檔案的下載方式

  (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)文字檔案下載

  文字檔案下載時用的是字元流,而不是位元組流。首先取得原始檔的字元輸入流物件,用java.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(); 

%>

相關推薦

JSP程式response物件實現檔案下載方式

  這篇文章主要介紹了JSP隱含物件response實現檔案下載的兩種方法,很簡單,但很實用,需要的朋友可以參考下。   一.JSP隱含物件response實現檔案下載的介紹   (1)在JSP中實現檔案下載最簡單的方法是定義超連結指向目標資源,使用者單擊超連結後直接下載資源,但直接暴露資源的URL   也

Spring-boot讀取config配置檔案方式

瞭解過spring-Boot這個技術的,應該知道Spring-Boot的核心配置檔案application.properties,當然也可以通過註解自定義配置檔案的資訊。 Spring-Boot讀取配置檔案的方式: 一.讀取核心配置檔案資訊application.p

HttpServletResponse物件實現檔案下載

檔案下載在我們的專案中是很常見的需求,實現檔案下載功能的方式有很多,spring-mvc框架也提供了檔案下載的功能。我們本次探討的功能是利用HttpServletResponse物件來實現檔案下載的功能。 思路如下: (1)獲取檔案位置路徑 (2)獲取檔名

javascript 面向物件(實現繼承的幾方式)

 1、原型鏈繼承 核心: 將父類的例項作為子類的原型 缺點:  父類新增原型方法/原型屬性,子類都能訪問到,父類一變其它的都變了 function Person (name) { this.name =

SparkRDD轉換成DataFrame的方式(分別用Java和scala實現

 一:準備資料來源       在專案下新建一個student.txt檔案,裡面的內容為: print? <code class="language-java">1,zhangsan,20   2,lisi,21   3,wanger,1

前端資料流檔案下載方式

1、直接使用get請求方式進行下載: window.open(`${url}?${qs.stringify(param)}`, '_blank'); 2、使用form 表單post請求進行下載: const postDownloadFile = (action, param) =>

Ajax使用FormData物件上傳檔案方式

以下是Demo的專案結構:主要就是一個servlet3.0和一個jsp頁面 由於使用的是servlet3.0,所以無需配置web.xml,以下是idnex.jsp頁面: <%@ page language="java" contentType="

在Liferay下載--方式

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="

FreeMarker引入公共檔案方式

這裡簡單敘述了一下<#include/>和<#import/>的用法 首先是自定義的工具類FreeMarkerUtil.java package com.jadyer.util; import java.io.BufferedWriter

CSS3實現動畫的方式

logs del pin 屬性 cnblogs ase http eve 括號 1、設置transition設置過渡,添加transform設置形狀,形成動畫效果,如下: .divadd { transition: All 0.4s ease-in-out;

java數組復制的方式

ava log brush class div 方法 () print str 在java中數組復制有兩種方式: 一:System.arraycopy(原數組,開始copy的下標,存放copy內容的數組,開始存放的下標,需要copy的長度);   這個方法需要先創建一個空的

spring boot讀取配置文件的方式

www con one -s 讀取配置文件 測試 spa span ati application.properties test.name=測試 test.url=www.test.com 1.@Value註解 在controller裏可以這樣直接調用 @Value

JDBCOracle的SID和ServiceName方式的連接字符串格式

bottom none color bubuko div nbsp rac 字符串 padding SID格式: jdbc:oracle:thin:@<host>:<port>:<SID> 如: jdbc:oracle:thin:@19

css實現透明的方式及其區別

白色 class 子節點 new 透明度 區別 方式 ron pre 一、opacity:0~1 值越高,透明度越低,下面為示例 選擇器{ opacity:0.5 } 選擇器匹配到的節點們,包括節點們的孩子節點,都會實現%50透明,另 0.5 可直

beans.xml引入.properties檔案方式

方法一: <context:property-placeholder location="classpath:config.properties"/> 方法二: <bean class="org.springframework.beans.factory.con

python 讀取wav 音訊檔案方式

  python 中,常用的有兩種可以讀取wav音訊格式的方法,如下所示: 1 import scipy 2 from scipy.io import wavfile 3 4 import soundfile as sf 5 6 fs,data = wavfile.read(

python多執行緒開啟的方式(內含有event的應用,即安全的機制,類似於java的等待喚醒機制,不會出現多個執行緒之間的錯亂問題)

 event是類似於java中的等待喚醒機制,具體方法參照上一篇CSDN 下面來介紹開啟執行緒的第一種方式 #Filename:threading1.py #開啟執行緒的第一種方式 import threading import time event=threadin

HttpClient 傳輸檔案方式

1. org.apache.commons.httpclient.HttpClient package com.skd.util; import com.skd.common.Constant; import com.skd.common.Event; import org.apa

js 圖片base64轉file檔案方式

        最近專案中需要實現把圖片的base64編碼轉成file檔案的功能,然後再上傳至伺服器。起初是直接通過new File()的方式進行轉換,在各個主流的瀏覽器基本上都支援,Android也沒問題,但是在ios系統埋了個坑,ios11.4以下的系統上傳失敗。定位bu

實現AJAX的方式

第一種通過XMLHttpRequest實現: 需要手動建立XMLHttpRequest物件,較繁瑣。 js程式碼: <script type="text/javascript"> function getComments(){ //獲得評論框內