文件下载

Posted lightbc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件下载相关的知识,希望对你有一定的参考价值。

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.下载成功。

以上是关于文件下载的主要内容,如果未能解决你的问题,请参考以下文章

在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途

代码片段 PHP,预期文件结尾,我错在哪里?

代码适用于与单个 html 文件不同的堆栈片段

VS code自定义用户代码片段snippet

Java itext为pdf 文件添加水印核心功能代码片段

VSCode自定义代码片段——声明函数