通過Servlet設置文件下載


文件下載

1.獲取要下載的文件的絕對路徑

但是使用getServletContext().getRealPath()方法在不同的服務器上所獲得的實現是不一樣的

因為項目被打包入.war文件以后就失去了原來的目錄結構,使用獲取絕對路徑的方法返回為NULL

在這里我們可以使用另一個方法getResourceAsStream()獲取路徑

String realPath = this.getServletContext().getRealPath("/download/1.jpg");

InputStream inputStream = this.getServletContext().getResourceAsStream("/download/1.jpg");

2.獲取要下載的文件名

String fileName = realPath.substring(realPath.lastIndexOf("\")+);

使用getResourceAsStream()方法時由於沒有返回一個路徑。所以這里的文件名需要自己賦值
String fileName = "1.jpg";

3.設置content-disposition響應頭控制瀏覽器以下載文件的形式打開文件

response.setHeader("content-disposition", "attachment;filename=" + fileName);

4.獲取要下載的文件輸入流

InputStream in = new FileInputStream(realPath);
int len = 0;

這里的步驟中由於realPath不再使用。所以輸入流in可以不用。

5.創建數據緩沖區

byte[] buffer = new byte[1024];

6.通過response對象獲取OutputStream流

OutputStream out = response.getOutputStream();

7.將FileInputStream流寫入到buffer緩沖區

while((len = in.read(buffer)) > 0){ //這里的in換成inputStream

8.使用OutputStream將緩沖區的數據輸出到客戶端瀏覽器

out.write(buffer, 0, len);

}

9.關閉輸入流

in.close(); //這里同理

測試結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM