https://blog.csdn.net/stubbornness1219/article/details/72356632java
Springboot對資源的描述提供了相應的接口,其主要實現類有ClassPathResource、FileSystemResource、UrlResource、ByteArrayResource、python
ServletContextResource和InputStreamResource。web
Resource接口中主要定義有如下方法:數組
若是須要獲取本地文件系統中的指定路徑下的文件,有一下幾種方式緩存
第一種方式經過封裝ResponseEntity,將文件流寫入body中。這裏注意一點,就是文件的格式須要根據具體文件的類型來設置,通常默認爲application/octet-stream。文件頭中設置緩存,以及文件的名字。文件的名字寫入了,均可以免出現文件隨機產生名字,而不能識別的問題。app
第二種方式採用了Java中的File文件資源,而後經過寫response的輸出流,放回文件。webapp
//文件下載相關代碼 @RequestMapping("/download") public String downloadFile(HttpServletRequest request, HttpServletResponse response) { String fileName = "b60bcf72-219d-4e92-88de-ed6b0ad9b0e7-2018-04-23-14-09-14.xls";// 設置文件名,根據業務須要替換成要下載的文件名 if (fileName != null) { //設置文件路徑 String realPath = "D:\\eclipsworksapce1\\upgrade\\src\\main\\webapp\\upload\\tbox\\456789\\"; File file = new File(realPath , fileName); if (file.exists()) { response.setContentType("application/octet-stream");// response.setHeader("content-type", "application/octet-stream"); response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);// 設置文件名 byte[] buffer = new byte[1024]; FileInputStream fis = null; BufferedInputStream bis = null; try { fis = new FileInputStream(file); bis = new BufferedInputStream(fis); OutputStream os = response.getOutputStream(); int i = bis.read(buffer); while (i != -1) { os.write(buffer, 0, i); i = bis.read(buffer); } System.out.println("success"); } catch (Exception e) { e.printStackTrace(); } finally { if (bis != null) { try { bis.close(); } catch (IOException e) { e.printStackTrace(); } } if (fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } } } return null; }