文件下载

1.文件下载后端代码

/**
     * 初始化下载页面
     *
     * @return
     */
    @RequestMapping(value = "/initDownloadPage", method = RequestMethod.GET)
    public String initDownloadPage(Model model) {
        File file = new File("D:/File");
     // 获取文件列表
if (file.exists() && file.isDirectory()) { String[] files = file.list(); if (files.length > 0) { model.addAttribute("fileList", files); } else { System.out.print("空!"); } } else { System.out.print("路径不存在!"); } return "download"; } /** * 文件下载 * * @param fileName * @param response * @throws Exception */ @RequestMapping(value = "/downloadFile", method = RequestMethod.GET) public void downloadFile(@RequestParam("fileName") String fileName, HttpServletResponse response) throws Exception { // 如果文件名不为空,则进行下载 if (fileName != null) { //设置文件路径 String realPath = "D:/File/"; File file = new File(realPath, fileName); // 如果文件名存在,则进行下载 if (file.exists()) { // 配置响应头 response.setHeader("content-type", "application/octet-stream"); response.setContentType("application/octet-stream"); // 设置文件名 response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); // 实现文件下载 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); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (bis != null) { bis.close(); } if (fis != null) { fis.close(); } } catch (Exception e) { e.printStackTrace(); } } } } }

2.文件下载前端代码

<!DOCTYPE html>
<html lang="en"  xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../static/jquery-3.4.1.js"></script>
    <script>
       function download(e) {
           var data =$(e).prev().text();
           window.location.href = "/file/downloadFile?fileName="+data;
       }
    </script>
</head>
<body>
<p th:each="file:${fileList}">
    <a th:text="${file}" href="#"></a>
    <input type="button" value="下载" onclick="download(this)">
</p>
</body>
</html>

3.文件下载功能测试

4.下载成功。

posted @ 2019-12-07 13:48  lightbc  阅读(156)  评论(0编辑  收藏  举报