1.文件下載思路:
點擊下載操作后,會將前端的數據傳輸到Controller,根據獲得的數據(可能是文件id,文件name等等)去數據庫
查詢出文件的具體信息(文件的類型,文件的存儲路徑,文件大小等等),然后根據文件的路徑,用輸入流去讀取數據,
通過HttpServletResponse對象response.getOutputStream得到一個輸出流, 然后以流的形式將數據返回到瀏覽器。
需要設置頭信息,去告知瀏覽器此次行為是下載。
1.獲取文件相關信息
例如:文件的ID、文件的實際名稱、文件的類型、文件的實際存儲路徑、文件的大小等(根據實際情況獲取)
2.設置文件下載名稱(需要有表示文件類型的后綴:.png/.gif/.pig等)
3.處理中文 下載名稱 亂碼問題
HttpServletRequest req msie:IE瀏覽器
通過req去獲得瀏覽器的類型,根據瀏覽器類型設置不同的編碼方式
4.設置響應頭信息
response.setContentType("image/jpg") 根據文件實際類型進行設置
response.setHeader("Content-Disposition","attachment;filename="+filename):彈框效果,並設置下載文件名
//response.setContentLength(len);
//response.setCharacterEncoding(charset);
5.根據文件url,使用輸入流讀取文件
InputStream is = new FileInputStream(new File(url));
OutputStream os = response.getOutputStream();
IOUtils.copy(is, os);
//將數據以流的形式返回到瀏覽器
6.關流(遵守 先開后關的原則)
先創建的流后關閉
這是一個簡單的下載實現,下載tomcat上images文件夾下的FirstPS.jpg文件,文件信息直接在Controller處進行設置
這個是下載網絡上的一張圖片的代碼