文件下载

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 @   lightbc  阅读(160)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示