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

Servlet實現(xiàn)文件下載功能

 更新時間:2017年12月18日 09:07:37   作者:兩顆番茄  
這篇文章主要為大家詳細介紹了Servlet實現(xiàn)文件下載功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Servlet實現(xiàn)文件下載的具體代碼,供大家參考,具體內(nèi)容如下

把文件目錄直接暴露給用戶是很不安全的。所以要用Servlet來做,而且這樣做,文件的存儲方式就更豐富了,可以是從文件系統(tǒng)上取來的,也可以是數(shù)據(jù)庫中經(jīng)過計算生成的,或者從其它什么稀奇古怪的地方取來的。

public class DownloadServlet extends HttpServlet {
  private String contentType = "application/x-msdownload";
  private String enc = "utf-8";
  private String fileRoot = "";


  /**
   * 初始化contentType,enc,fileRoot
   */
  public void init(ServletConfig config) throws ServletException {
    String tempStr = config.getInitParameter("contentType");
    if (tempStr != null && !tempStr.equals("")) {
      contentType = tempStr;
    }
    tempStr = config.getInitParameter("enc");
    if (tempStr != null && !tempStr.equals("")) {
      enc = tempStr;
    }
    tempStr = config.getInitParameter("fileRoot");
    if (tempStr != null && !tempStr.equals("")) {
      fileRoot = tempStr;
    }
  }

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String filepath = request.getParameter("filepath");
    String fullFilePath = fileRoot + filepath;
    /*讀取文件*/
    File file = new File(fullFilePath);
    /*如果文件存在*/
    if (file.exists()) {
      String filename = URLEncoder.encode(file.getName(), enc);
      response.reset();
      response.setContentType(contentType);
      response.addHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
      int fileLength = (int) file.length();
      response.setContentLength(fileLength);
      /*如果文件長度大于0*/
      if (fileLength != 0) {
        /*創(chuàng)建輸入流*/
        InputStream inStream = new FileInputStream(file);
        byte[] buf = new byte[4096];
        /*創(chuàng)建輸出流*/
        ServletOutputStream servletOS = response.getOutputStream();
        int readLength;
        while (((readLength = inStream.read(buf)) != -1)) {
          servletOS.write(buf, 0, readLength);
        }
        inStream.close();
        servletOS.flush();
        servletOS.close();
      }
    }
  }

web.xml

  <servlet>
    <servlet-name>downloadservlet-name>
    <servlet-class>org.mstar.servlet.DownloadServletservlet-class>
    <init-param>
      <param-name>fileRootparam-name>
      <param-value>d:/tempparam-value>
    init-param>
    <init-param>
      <param-name>contentTypeparam-name>
      <param-value>application/x-msdownloadparam-value>
    init-param>
    <init-param>
      <param-name>encparam-name>
      <param-value>utf-8param-value>
    init-param>
  servlet>
  <servlet-mapping>
    <servlet-name>downloadservlet-name>
    <url-pattern>/downurl-pattern>
  servlet-mapping>

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

相關文章

  • fastjson 使用方法詳細介紹

    fastjson 使用方法詳細介紹

    Fastjson是一個Java語言編寫的JSON處理器,由阿里巴巴公司開發(fā)。接下來通過本文給大家分享fastjson 使用方法詳細介紹,感興趣的朋友一起看看吧
    2017-11-11
  • Spinrg WebFlux中Cookie的讀寫的示例

    Spinrg WebFlux中Cookie的讀寫的示例

    這篇文章主要介紹了Spinrg WebFlux中Cookie的讀寫的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • 深入了解Java設計模式之UML類圖

    深入了解Java設計模式之UML類圖

    UML?即?Unified?Modeling?Language?統(tǒng)一建模語言,是用來設計軟件的可視化建模語言。本文就帶大家了解一下UML中類圖的定義與使用,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-11-11
  • Java使用定時器編寫一個簡單的搶紅包小游戲

    Java使用定時器編寫一個簡單的搶紅包小游戲

    這篇文章主要為大家介紹了Java如何使用定時器編寫一個簡單的搶紅包小游戲,文中的示例代碼講解詳細,感興趣的小伙伴可以嘗試一下
    2022-07-07
  • Java正則表達式——group方法的使用

    Java正則表達式——group方法的使用

    這篇文章主要介紹了Java正則表達式group方法的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • java使用WatchService監(jiān)控文件夾示例

    java使用WatchService監(jiān)控文件夾示例

    本篇文章主要介紹了java使用WatchService監(jiān)控文件夾示例的資料,這里整理了詳細的代碼,有需要的小伙伴可以參考下。
    2017-02-02
  • JAVA返回PDF文件流并進行下載的實現(xiàn)方法

    JAVA返回PDF文件流并進行下載的實現(xiàn)方法

    這篇文章主要給大家介紹了關于JAVA返回PDF文件流并進行下載的實現(xiàn)方法,PDF文件流下載是通過HTTP協(xié)議將服務器上的PDF文件以流的方式發(fā)送給客戶端,供客戶端保存到本地磁盤或直接在瀏覽器中打開,需要的朋友可以參考下
    2024-02-02
  • 如何通過一個注解實現(xiàn)MyBatis字段加解密

    如何通過一個注解實現(xiàn)MyBatis字段加解密

    用戶隱私很重要,因此很多公司開始做數(shù)據(jù)加減密改造,下面這篇文章主要給大家介紹了關于如何通過一個注解實現(xiàn)MyBatis字段加解密的相關資料,需要的朋友可以參考下
    2022-02-02
  • Java開發(fā)之普通web項目轉為Maven項目的方法

    Java開發(fā)之普通web項目轉為Maven項目的方法

    這篇文章主要給大家介紹了關于Java開發(fā)之普通web項目轉為Maven項目的相關資料,文中通過圖文將轉換的方法步驟介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-12-12
  • SpringBoot+Mybatis-plus+shardingsphere實現(xiàn)分庫分表的方案

    SpringBoot+Mybatis-plus+shardingsphere實現(xiàn)分庫分表的方案

    實現(xiàn)億級數(shù)據(jù)量分庫分表的項目是一個挑戰(zhàn)性很高的任務,下面是一個基于Spring Boot的簡單實現(xiàn)方案,感興趣的朋友一起看看吧
    2024-03-03

最新評論

修文县| 罗源县| 黔东| 云浮市| 黑水县| 仁怀市| 米林县| 德州市| 卓资县| 常德市| 土默特右旗| 莱州市| 中方县| 永靖县| 渝中区| 嵊州市| 思南县| 车致| 固阳县| 广灵县| 绍兴市| 凌源市| 海林市| 岢岚县| 鄂温| 永靖县| 岳阳县| 淄博市| 象州县| 陵川县| 湘乡市| 高邑县| 普兰县| 万载县| 兴化市| 江城| 金乡县| 广河县| 丰县| 灵宝市| 杂多县|