最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

servlet實現(xiàn)文件下載的步驟及說明詳解

 更新時間:2017年09月07日 10:42:10   作者:Marydon  
這篇文章主要為大家詳細介紹了servlet實現(xiàn)文件下載的步驟及說明,具有一定的參考價值,感興趣的小伙伴們可以參考一下

servlet實現(xiàn)文件下載所需步驟及說明,供大家參考,具體內(nèi)容如下

參考文章:Servlet實現(xiàn)文件下載功能

1.原理介紹:

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

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

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

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

2.所需步驟:

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

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

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

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

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

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

  2.3 獲取文件,并讀取文件

  2.4 以字節(jié)流的方式返回頁面

實例:

/**
 * 處理文件下載的post
 * @throws IOException
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
 // 1.獲得請求文件名
 String fileName = request.getParameter("fileName");
 // 2.設置文件MIME類型(指定要返回內(nèi)容的類型)
 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實現(xiàn)文件上傳,預覽,下載和刪除

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • AsyncHttpClient的ConnectionSemaphore方法源碼流程解讀

    AsyncHttpClient的ConnectionSemaphore方法源碼流程解讀

    這篇文章主要為大家介紹了AsyncHttpClient的ConnectionSemaphore方法源碼流程解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • 使用maven依賴詳解

    使用maven依賴詳解

    本文主要介紹了Maven的基礎知識,包括Maven的簡介、倉庫類型、常用命令、場景舉例、指令總結(jié)、依賴范圍、settings.xml說明等,同時,還詳細講解了Maven依賴的傳遞、手動聲明optional、沖突解決等概念
    2025-02-02
  • SpringBoot詳解Banner的使用

    SpringBoot詳解Banner的使用

    這篇文章主要介紹了超個性修改SpringBoot項目的啟動banner的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • java多線程中線程封閉詳解

    java多線程中線程封閉詳解

    在本文里我們給大家分享了關(guān)于java多線程中線程封閉的知識點內(nèi)容以及用法,有需要讀者們可以參考下。
    2019-07-07
  • 利用exe4j生成java的exe文件

    利用exe4j生成java的exe文件

    本文主要介紹了利用exe4j生成java的exe文件,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Java大數(shù)據(jù)開發(fā)Hadoop?MapReduce

    Java大數(shù)據(jù)開發(fā)Hadoop?MapReduce

    MapReduce的思想核心是“分而治之”,適用于大量復雜的任務處理場景(大規(guī)模數(shù)據(jù)處理場景)Map負責“分”,即把復雜的任務分解為若干個“簡單的任務”來并行處理??梢赃M行拆分的前提是這些小任務可以并行計算,彼此間幾乎沒有依賴關(guān)系
    2023-03-03
  • java實現(xiàn)兩臺服務器間文件復制的方法

    java實現(xiàn)兩臺服務器間文件復制的方法

    這篇文章主要介紹了java實現(xiàn)兩臺服務器間文件復制的方法,是對單臺服務器上文件復制功能的升級與改進,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • Ribbon的饑餓加載(eager-load)模式解讀

    Ribbon的饑餓加載(eager-load)模式解讀

    這篇文章主要介紹了Ribbon的饑餓加載(eager-load)模式解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Guava Cache的使用簡介

    Guava Cache的使用簡介

    這篇文章主要介紹了Guava Cache的使用簡介,幫助大家更好的理解和學習使用Guava Cache,感興趣的朋友可以了解下
    2021-03-03
  • 詳解SpringBoot中實現(xiàn)依賴注入功能

    詳解SpringBoot中實現(xiàn)依賴注入功能

    這篇文章主要介紹了詳解SpringBoot中實現(xiàn)依賴注入功能,SpringBoot的實現(xiàn)方式基本都是通過注解實現(xiàn)的。有興趣的可以了解一下。
    2017-04-04

最新評論

阳新县| 麻江县| 巴塘县| 南丹县| 始兴县| 县级市| 中卫市| 南华县| 六枝特区| 滁州市| 玉溪市| 商城县| 凤阳县| 五峰| 托克逊县| 库车县| 巴塘县| 滕州市| 清苑县| 涪陵区| 广灵县| 德阳市| 郴州市| 贡山| 长沙县| 若羌县| 丽水市| 阿瓦提县| 灵璧县| 和静县| 浮山县| 远安县| 沾益县| 定边县| 龙游县| 礼泉县| 教育| 吉林省| 大田县| 苍梧县| 苍溪县|