中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Servlet實現文件下載功能

發布時間:2020-08-29 13:41:45 來源:腳本之家 閱讀:134 作者:兩顆番茄 欄目:編程語言

本文實例為大家分享了Servlet實現文件下載的具體代碼,供大家參考,具體內容如下

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

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) {
        /*創建輸入流*/
        InputStream inStream = new FileInputStream(file);
        byte[] buf = new byte[4096];
        /*創建輸出流*/
        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>

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

向AI問一下細節

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

AI

茌平县| 姚安县| 石河子市| 永吉县| 兴山县| 邹平县| 临安市| 西藏| 开江县| 英山县| 松江区| 英吉沙县| 三门峡市| 育儿| 昌邑市| 杭锦后旗| 许昌县| 于田县| 丹阳市| 丰宁| 温泉县| 桃园市| 宽甸| 松桃| 甘孜| 民乐县| 商南县| 伊宁市| 阿拉尔市| 沙雅县| 渭南市| 筠连县| 成都市| 漳州市| 托克托县| 丰台区| 西吉县| 中方县| 河曲县| 广水市| 浦江县|