Springboot 下载文件

Springboot 下载文件Springboot 下载文件比较简单 以下是代码 目录结构 FileUtil 为文件工具类 里面包括下载的方法 以下为 FileUtil 的代码 publicclassF publicstatic Stringfilena HttpServletR throwsIOExce

Springboot下载文件比较简单,以下是代码:

目录结构

在这里插入图片描述
FileUtil为文件工具类,里面包括下载的方法,以下为FileUtil的代码:

public class FileUtil { 
    public static void download(String filename, HttpServletResponse res) throws IOException { 
    // 发送给客户端的数据 OutputStream outputStream = res.getOutputStream(); byte[] buff = new byte[1024]; BufferedInputStream bis = null; // 读取filename bis = new BufferedInputStream(new FileInputStream(new File("./file/" + filename))); int i = bis.read(buff); while (i != -1) { 
    outputStream.write(buff, 0, buff.length); outputStream.flush(); i = bis.read(buff); } } } 

file文件夹中asdfa.txt文件是我们要的目标下载,内容如下:

fafa favadf ad adsf adsf adsf a a 

2.后台代码

FileDealController .java代码:

@RequestMapping("/file") @RestController public class FileDealController { 
    @RequestMapping(value = "download") public void download( @RequestParam("fileName") String filename ) throws IOException { 
    ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletResponse response = requestAttributes.getResponse(); // 设置信息给客户端不解析 String type = new MimetypesFileTypeMap().getContentType(filename); // 设置contenttype,即告诉客户端所发送的数据属于什么类型 response.setHeader("Content-type",type); // 设置编码 String hehe = new String(filename.getBytes("utf-8"), "iso-8859-1"); // 设置扩展头,当Content-Type 的类型为要下载的类型时 , 这个信息头会告诉浏览器这个文件的名字和类型。 response.setHeader("Content-Disposition", "attachment;filename=" + hehe); FileUtil.download(filename, response); } } 

3.前端代码

 <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title 
     title> <link th:href="@{/css/element-index.css}" rel="stylesheet"/>  
      head> <body> <div id="test1">  
      <el-button size="small" @click="downLoad('asdfa.txt')">下载 
       el-button>  
        div>  
         body> <script th:src="@{/js/vue.js}"> 
          script> <script th:src="@{/js/element-index.js}"> 
           script> <script> new Vue({ 
            el: '#test1', data:function () { 
            return { 
            } }, methods: { 
            //下载文件 downLoad: function (val) { 
            window.open("http://" + window.location.host + "/file/download?fileName=" + val, '_blank') } } });  
            script>  
             html> 

注意:这里用的vue+element插件

4.测试

在这里插入图片描述
在这里插入图片描述
我这里用的是chrome浏览器,打开asdfa(1).txt文件:
在这里插入图片描述
下载内容与file里的一样,则下载成功。








版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200270.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午11:11
下一篇 2026年3月20日 上午11:11


相关推荐

  • (ExcelVBA编程入门范例)

    (ExcelVBA编程入门范例)很喜爱VBA,喜欢使用她对Excel操作实现所需的功能,更喜欢使用VBA控制Excel以及实现结果后的那种感觉。一直都想对ExcelVBA进行系统的整理和归纳,但由于对Excel及VBA了解得不够深入,总觉得无从下手。再加上又是利用少得可怜的业余时间进行学习,时断时续,学习的主线和思路也经常因为工作或其它的事情而打断。但喜欢学习的人总会挤得出时间来的,要想掌握或者是精通一门知识和技术不能有任何借口

    2022年6月6日
    54
  • Python-Curses模块

    Python-Curses模块Python Curses 什么是 Curses PythonCurses 模块开始我们的编程吧 WindowsandPa 什么是 Curses curses 库为基于文本的终端提供独立于终端的屏幕绘制和键盘处理设施 这些终端包括 VT100s Linux 控制台和各种程序提供的模拟终端 显示终端支持各种控制代码来执行常见的操作 如移动光标 滚动屏幕和擦除区域 不同的终端使用的代码差别很大 而且常常有

    2026年3月19日
    3
  • 通过Nginx来解决跨域问题

    通过Nginx来解决跨域问题Nginx 跨域实现 首先大家要搞清楚什么是跨域 为什么会有跨域情况的出现 哪些情况属于跨域 跨域 由于浏览器的同源策略 即属于不同域的页面之间不能相互访问各自的页面内容注 同源策略 单说来就是同协议 同域名 同端口 URL 说明是否允许通信 http www a com a jshttp www a com b js 同一域名下允许 http www a com lab a jshttp www a com script b js 同一域名下不同文件夹允许

    2026年3月26日
    2
  • ubuntu卸载JDK

    ubuntu卸载JDK1.要删除OpenJDK,检查是安装的哪个OpenJDK包#dpkg–list|grep-ijdk2.移除openjdk包#apt-getpurgeopenjdk*3.卸载OpenJDK相关包#apt-getpurgeicedtea-*openjdk-*4.检查所有OpenJDK包是否都已卸载完毕#dpkg–list|grep-ijdk注:如果权限不够,就在前面加上sudo。…

    2022年6月25日
    29
  • 以管理员身份修改hosts文件_如何修改hosts文件权限

    以管理员身份修改hosts文件_如何修改hosts文件权限第一步先在目录C:\Windows\System32\drivers\etc下找到host文件。右键点开属性,取消勾选只读。进入“安全”点击编辑选择允许修改。以管理员身份运行powershell,输入指令cddrivers\etc跳转到该目录下,再输入指令notepadhosts回车弹出host文件窗…

    2022年10月12日
    4
  • 豆包大模型:制造业质检的最佳AI模型选择

    豆包大模型:制造业质检的最佳AI模型选择

    2026年3月12日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号