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; }