springmvc文件下載


1、

文件下載是web項目中常用的服務,在springmvc中常用ResponseEntity類來事項文件下載

2、ResponseEntity

ResponseEntity類實現響應頭、文件數據(以字節存儲)、狀態封裝在一起交給瀏覽器處理以實現瀏覽器的文件下載。簡單的說ResponseEntity可以折這HttpHeaders和HttpStatus,通過對HttpHeaders和HttpStatus的設置可以使瀏覽器執行下載操作。

3、實現文件下載

步驟

  1. 獲取到文件的存放的真實路徑
  2. 根據接收到的文件名和文件真實路徑創建文件實例(注意:這里不是創建一個文件,而是創建一個File型的實例)
  3. 設置響應頭Content-Disposition瀏覽器根據這個響應頭執行相應的操作和要下載的文件名
  4. 設置響應內容的MIME類型,以二進制流形式傳輸
  5. 返回ResponseEntity

具體代碼:

@RequestMapping("/download")
public ResponseEntity<byte[]> download(@RequestParam("fileName") String fileName, HttpServletRequest req)
		throws IOException {

	// 獲取文件存放的真實路徑
	String realPath = req.getServletContext().getRealPath("/WEB-INF/file");
	//創建文件實例
	File file = new File(realPath, fileName);
	//修改文件名的編碼格式
	String downloadFileName = new String(fileName.getBytes("UTF-8"), "UTF-8");
	
	//設置httpHeaders,使瀏覽器響應下載
	HttpHeaders headers = new HttpHeaders();
	//告訴瀏覽器執行下載的操作,“attachment”告訴了瀏覽器進行下載,下載的文件 文件名為 downloadFileName
	headers.setContentDispositionFormData("attachment", downloadFileName);
	//設置響應方式為二進制,以二進制流傳輸
	headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
	return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);
}

4、火狐瀏覽器測試

從圖中我們可以看到,我們設置的Content-Disposition起效果,傳輸類型也為二進制。


免責聲明!

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



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