文件下载
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.下载成功。
作者:lightbc
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现