/** * @author compass * @version 1.0 * @date 2021-05-14 21:43 */ @Controller @RequestMapping("/file/") public class FileDownloadController { // 提供访问接口 @GetMapping("downloadIn.mvc") public String downloadIn(){ return "index"; } // 初始化页面数据 @ResponseBody @GetMapping("init.mvc") public List<MyFile> test(){ File file = new File("D:\\IDE2019\\work"); FilerService service = new FilerService(); // 将制定目录的文件夹 下的目录和文件构建为MyFile对象装到List集合中 List<MyFile> listAll1 = service.listAll1(file, 1); // 返回Json数据给前端进行渲染 return listAll1; } // 提供下载接口 @GetMapping("download.mvc") public ResponseEntity <byte[]> fileDownload1(String filename,HttpServletRequest request) throws IOException { // 指定下载那个目录下的文件 File file = new File("D:\\IDE2019\\work"); FilerService service = new FilerService(); // 获取到该文件的父目录 String path = service.getFileName(filename, file); // 创建文件下载对象 File downloadFile = new File(path, filename); HttpHeaders header = new HttpHeaders(); header.setContentDispositionFormData("attachment",filename); header.setContentType(MediaType.APPLICATION_OCTET_STREAM); ResponseEntity<byte[]> result = new ResponseEntity<>(FileUtils.readFileToByteArray(downloadFile), header, HttpStatus.OK); return result; } }
测试:可以看到我们每点击一个文件都可以跳转到我们的下载接口,进行下载的。
这只是一个简单的使用,还有很多地方需要进行优化,当然也可以使用别的方法进行实现,这就是算是一个小练习吧,复习一下ajax和递归的知识。