JavaWeb(入門篇08)Response 下載文件實現

1.實現步驟

//1.獲取下載路徑和 獲取下載文件名稱(重點)
//2.設置頭爲下載文件頭(重點)
//3.使用之前的IO緩衝輸出文件

2.核心代碼

設置文件頭文下載頭

//2.設置頭爲下載文件頭(重點)
resp.setHeader("Content-Disposition","attachment;filename=圖片"+ URLEncoder.encode(fileName, "UTF-8"));

3.實現代碼

package com.bmft;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLEncoder;

/**
 * 這個類用於實現文件的下載
 * //1.獲取下載路徑和 獲取下載文件名稱(重點)
 * //2.設置頭爲下載文件頭(重點)
 * //3.使用之前的IO緩衝輸出文件
 */
public class DownLoadFile extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.獲取下載路徑和獲取下載文件名稱\
        String absolutePath = "C:\\Users\\25301\\Pictures\\壁紙\\高清後\\coffeeGirl.jpg";
        //一種自動獲取文件名稱的方式,也可用分割實現
        String fileName = absolutePath.substring(absolutePath.lastIndexOf("\\") + 1);
        //2.設置頭爲下載文件頭(重點)
        resp.setHeader("Content-Disposition", "attachment;filename=圖片" + URLEncoder.encode(fileName, "UTF-8"));
        //3.使用之前的IO緩衝輸出文件
        FileInputStream fileInputStream = new FileInputStream(absolutePath);
        int length = 0;
        byte[] bytes = new byte[1024 * 10];
        ServletOutputStream outputStream = resp.getOutputStream();
        while ((length = fileInputStream.read(bytes)) > 0) {
            outputStream.write(bytes, 0, length);
        }
        fileInputStream.close();
        outputStream.close();
        System.out.println("圖片下載成功");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

4.映射

  <!-- 一、註冊 -->
  <servlet>
    <servlet-name>DownLoadFile</servlet-name>
    <servlet-class>com.bmft.DownLoadFile</servlet-class>
  </servlet>
  <!-- 二、映射 -->
  <servlet-mapping>
    <servlet-name>DownLoadFile</servlet-name>
    <url-pattern>/DownLoadFile</url-pattern>
  </servlet-mapping>

5.效果

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章