1. 程式人生 > 實用技巧 >使用response實現檔案的下載

使用response實現檔案的下載

1、專案結構

程式碼:

package com.guangtao.servlet;

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;

public class FileServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 1、獲取要下載的檔案 String realPath = "D:\\Java_File\\javaweb-maven-servlet\\response\\src\\main\\resources\\廣濤.png"; System.out.println(
"要下載的路徑: " + realPath); // 2、下載的檔案命名是啥? 擷取到最後的\ 索引加1 String filename = realPath.substring(realPath.lastIndexOf("\\") + 1); System.out.println(filename); // 廣濤.png // 3、加入支援瀏覽器下載的請求頭 resp.setHeader("Content-disposition", "attachment;filename" + filename);
// 4、獲取下載檔案的輸入流 FileInputStream in = new FileInputStream(realPath); // 5、建立緩衝區 int len = 0; byte[] buffer = new byte[1024]; // 6、獲取OutputStream 物件 ServletOutputStream out = resp.getOutputStream(); // 7、將FileOutputStream 流寫入到buffer緩衝區,使用OutputStream將緩衝區中的資料輸出到客戶端 while ((len = in.read(buffer)) > 0) { out.write(buffer, 0, len); } // 關閉資源 in.close(); out.close(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }