springboot下载文件功能

springboot下载文件功能下载功能其实就是用户输入指定文件路径信息 然后把文件返回给用户 不同于上传的概念 同时需要考虑下文件的类型 从而选择使用字符流还是字节流操作 如果传输图片 用的是字符流 可能会造成文件内容缺失 毕竟是字符为单位传输的 无论什么文件 使用字节流肯定没错 实现步骤 pom 文件中引入了 springboot tater web 依赖新建 cotroller 类 其中的 RequestMappi 方法的方法参数中配置 HttpServletR 类方法中实现读取服务器文件流操作类 servlet 写入流操

实现步骤

  1. pom文件中引入了springboot-tater-web依赖
  2. 新建cotroller类,其中的RequestMapping方法的方法参数中配置HttpServletResponse
  3. 方法中实现读取服务器文件流操作类,servlet写入流操作类。

完整代码

@RequestMapping("getFile") @ResponseBody public void getFile(HttpServletResponse response) throws Exception{ 
    File readFile = new File("/home/ssx/Music/CloudMusic/夜曲-周杰伦.flac"); //字节流-用于读文件 这里只是demo用的非缓冲流。实际项目可以用BufferedInputStream。 此功能是读取图片,所以用的字节流。如果是文本的话可以用字符流效率高,具体类看下面注释 // BufferedReader bufferedReader = new BufferedReader(new FileReader(readFile));//字符流 FileInputStream fileInputStream = new FileInputStream(readFile);//字节流 //设置文件下载方式 response.setHeader("content-disposition","attachment;filename="+ URLEncoder.encode("夜曲-周杰伦.flac","utf-8")); //获取servlet响应输出字节流 // PrintWriter writer = response.getWriter();//字符流 ServletOutputStream outputStream = response.getOutputStream(); //字节流 //流数据交换,每次交换10k数据大小 (1024k = 1m) byte[] bytes = new byte[1024*10]; int read; do { 
    read = fileInputStream.read(bytes); outputStream.write(bytes,0,read); }while (-1 != read); //关闭资源 IOUtils.closeQuietly(fileInputStream); IOUtils.closeQuietly(outputStream); } 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • arrayqueue源码_一次视频解析源码

    arrayqueue源码_一次视频解析源码1、概述ArrayDeque是Deque接口的变长数组实现,它没有容量限制,会根据需要来扩容。它不是线程安全的,缺乏外部的同步机制,导致它不支持多线程的并发访问。Null对象是不许存在的,这个类很可能比Stack实现的栈和LinkedList实现的队列更快。其绝大多数操作运行在常数时间,除了一些需要线性时间执行的方法:remove、removeFirstOccurrence、removeLastOccurrence、contains、iterator.remove()和批量操作。它继承

    2026年2月2日
    6
  • jprofiler监控jvm_怎么检测jps

    jprofiler监控jvm_怎么检测jps很多人在学习java的时候只是对java粗略的学了一遍,很少有人能了解jvm层面的一些东西,比如我们想看目前有多少个java进程,可以在命令行执行jps。下面我们来说说jps的一些详细的用法。jps输出正字运行的相关进程信息jps-v输出传递给jvm参数jps-l输出模块名以及包名,如果是jar则出输jar文件全名jps-m输出传递给jvm参数jps-mlv输出进程号,包名,虚拟…

    2025年11月29日
    10
  • sqlyog连接mysql错误码2058_喜欢的错误方法

    sqlyog连接mysql错误码2058_喜欢的错误方法新建连接报错,错误号码2058windows系统打开cmd命令行窗口,输入mysql-uroot-p输入密码,登录mysql,再输入下面这行代码,’password’替换成你的密码。ALTERUSER’root’@’localhost’IDENTIFIEDWITHmysql_native_passwordBY’password’;执行完成后重新配置连接,完成。如果运行mysql-uroot-p命令报’mysql’不是内部或外部命令,也不是可运行的程序或批处理…

    2022年10月2日
    4
  • char型和int型数据可以相互转换_c语言强制类型转换用法

    char型和int型数据可以相互转换_c语言强制类型转换用法char转intchar与int的相互转化,联想ASCII码,字符‘0’对应的值为48,所以不能直接加减‘’charch=’9′;intch_int=ch-‘0′;//此时ch_int=9int转charinti=9;chari_ch=i+’0’;//此时i_ch=’9’必须记住的几个ASCII值字符值ASCII值‘0’48…

    2022年10月2日
    5
  • 微信也能用 OpenClaw!腾讯云 IM 手把手教你如何实现

    微信也能用 OpenClaw!腾讯云 IM 手把手教你如何实现

    2026年3月13日
    2
  • 使用bat命令得到文件名列表「建议收藏」

    使用bat命令得到文件名列表「建议收藏」一个文件夹下面有多个excle文件,快速得到文件名列表步骤如下:step1:在文件夹目录下新建一个txt类型的文件step2:在txt文件中写入如下代码,并保存。DIR*.*/B>LIST.TXTstep3:将txt文件改成.bat后缀,双击运行即可得到list.txt。

    2025年12月3日
    4

发表回复

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

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