91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

servlet實現文件下載的步驟及說明詳解

發布時間:2020-08-24 18:40:06 來源:腳本之家 閱讀:139 作者:Marydon 欄目:編程語言

servlet實現文件下載所需步驟及說明,供大家參考,具體內容如下

參考文章:Servlet實現文件下載功能

1.原理介紹:

        Web容器為Servlet生成并且傳遞的HttpServletResponse對象不僅可以返回HTML文本,而且可以返回任何主流的其他文件格式,例如,.doc、.pdf、.jar、.avi等內容格式的文件.這些類型內容在HTTP協議中主要是體現在HTTP響應消息中的消息頭部的content-type字段以及響應有效負載中.
content-type是向瀏覽器指明有效負載區里的內容是某某類型的,例如:.jar類型的內容.
而有效負載中的內容就是目標文件的字節集合,也就是二進制內容格式,而不是具體的類似于HTML的文本格式內容.

        因此,可以說Servlet可以利用HttpServletResponse對象返回任何想要返回的內容。

        需要通過HttpServletResponse的實例去設置HTTP協議響應消息消息頭部的一些屬性,這個是通過response.addHeader()或response.setHeader()或response.setIntHeader()函數來完成的。

這三個方法均有兩個參數:第一個參數是屬性名,第二個參數是屬性值。

2.所需步驟:

  2.1 response.setHeader("Content-Type","文件格式所對應的內容類型")

具體要根據國際標準的MIME屬性來制定,很多種格式的文件類型在MIME都會有對應,

如果直接通過URL來指定具體資源文件,則Apache服務器會根據服務器上的資源文件類型生成相應的HTTP相應消息的content-type類型,

但是如果不是直接通過URL指定資源文件,而是指向一個Servlet,則在Servlet內部就需要通過代碼顯式來指定響應消息中的content-type類型,否則不同種類的瀏覽器會有不同的動作,也很有可能使瀏覽器崩潰。

  2.2 response.setHeader("Content-Disposition","attachment;filename=" + 文件名稱)

       指定文件保存的默認命名,上例指定為utils.jar,是通過"content-disposition"屬性指定的,如果不指定則瀏覽器會默認指定為當前Servlet的URL名稱,例如CodeServlet.do,也就是說擴展名變成了.do而不是.jar.

  2.3 獲取文件,并讀取文件

  2.4 以字節流的方式返回頁面

實例:

/**
 * 處理文件下載的post
 * @throws IOException
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
 // 1.獲得請求文件名
 String fileName = request.getParameter("fileName");
 // 2.設置文件MIME類型(指定要返回內容的類型)
 response.setContentType(getServletContext().getMimeType(fileName));
 // 3.設置Content-Disposition(指定下載該文件時的文件名)
 response.setHeader("content-disposition", "attachment;filename=" + fileName);
 // 4.讀取目標文件,通過response將目標文件寫到客戶端
 // 4.1 獲取目標文件的絕對路徑
 String filePath = "WEB-INF/uploadFiles/" + fileName;
 filePath = this.getServletContext().getRealPath(filePath);
 // 4.2 讀取文件
 InputStream in = new FileInputStream(filePath);
 // 4.3 輸出文件
 OutputStream out = response.getOutputStream();
 // 寫文件
 int n;
 while ((n = in.read()) != -1) {
  out.write(n);
 }

 in.close();
 out.close();
}


說明:

1.所需jar包,版本不限

commons-fileupload-1.3.1.jar

commons-io-2.2.jar

2.導包時不要導錯了

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

3.更多對于文件的操作,請移步文章:servlet實現文件上傳,預覽,下載和刪除

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邢台县| 乌兰浩特市| 顺平县| 汝城县| 峨边| 乌鲁木齐县| 巩义市| 西昌市| 宜良县| 上饶市| 互助| 三河市| 石阡县| 张家港市| 关岭| 崇文区| 民县| 横山县| 平顺县| 孝感市| 万宁市| 昭通市| 梁河县| 高陵县| 北川| 公主岭市| 甘南县| 江西省| 南漳县| 宁海县| 和硕县| 绵竹市| 长汀县| 永和县| 九寨沟县| 潼关县| 福鼎市| 基隆市| 万山特区| 吉安县| 商洛市|