下载压缩文件和下载其他文件的写法是一样的因为都是操作的字节流,通过IO流实现先将文件读取出来,然后再输出到浏览器。

@RestController
public class DownloadController {@Autowiredprivate HttpServletResponse response;@GetMapping("/downloadFile")public void downloadFile(){String path = "G:\\document.zip";File file = new File(path);if(file.exists()){String fileName = file.getName();response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);download(response,file);}}public void download(HttpServletResponse response,File file){FileInputStream fis = null;BufferedInputStream bis = null;OutputStream os = null;try {os = response.getOutputStream();fis = new FileInputStream(file);bis = new BufferedInputStream(fis);byte[] buffer = new byte[1024];int len = 0;while((len = fis.read(buffer)) != -1){os.write(buffer, 0, len);}} catch (Exception e) {e.printStackTrace();}try {bis.close();fis.close();os.close();} catch (IOException e) {e.printStackTrace();}}
}

使用postman测试就可以了,点击send下面的send and Download就会弹出提示框选择保存文件路径,然后就可以下载文件了。

我们在写这样的代码是有事下载下载的zip文件打卡显示错误,这个问题一般都是在读缓冲区的时候出的问题,仔细分析以这段下代码是否有误,是否能完整输出字节缓冲区的数据。

byte[] buffer = new byte[1024];
int len = 0;
while((len = fis.read(buffer)) != -1){
os.write(buffer, 0, len);
}

补充: 如果使用类加载器的方式获取文件名或者文件流对象,需要注意的是pom文件里要添加以下标签,目的是防止zip被idea编译.  否则打开压缩包会出现"不可预料的文件末端"这样的错误.原因是代码在编译时会将我们上传到resources目录下的zip文件也进行编译,导致文件出现错误.

<build><plugins><plugin><configuration><encoding>UTF-8</encoding><nonFilteredFileExtensions><nonFilteredFileExtension>zip</nonFilteredFileExtension></nonFilteredFileExtensions></configuration></plugin></plugins>
</build>

基于SpringBoot实现后端压缩文件下载输出到前端相关推荐

  1. 基于SpringBoot前后端分离的众筹系统(附源码)

    基于SpringBoot前后端分离的众筹系统源码下载链接: https://download.csdn.net/download/weixin_47367099/85441573 一.运行步骤 1.环 ...

  2. 【微信小程序】基于SpringBoot开发后端

    微信小程序登录流程: 主要步骤: 1.小程序端调用 wx.login()向微信接口服务获取临时登录凭证code,并上传至开发者服务端. 2.开发者服务端向微信服务接口服务调用 auth.code2Se ...

  3. Java后端压缩JSON字符串,前端使用pako.min.js解压

    我在日常开发中遇到,由于后端返回JSON数据较大,导致前端响应的较慢,于是考虑通过后端压缩,前端解压的方式来进行优化: 后端压缩工具类: package com.stt.common.util;imp ...

  4. 基于SpringBoot前后端分离的网吧管理系统

    末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SpringBoot 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8 ...

  5. springboot前后端分离项目MultipartFile获取前端传的file为null问题

    [问题描述] springboot+vue 前后端分离项目,在对接上传文件功能时,一直显示文件为空. [分析] 查找了很多博客,解决方法五花八门,但原因应该还是 springboot自带的org.sp ...

  6. 基于SpringBoot实现文件上传功能(前端使用postman检查request)

    这周培训中有一天的作业是使用SpringBoot实现文件上传功能,老师的要求是在他搭好的基础上加上文件上传模块和前端上传的部分,spring工程搭好了,老师写的代码比较多,虽然实现了功能,但是不助于对 ...

  7. 个人头像手动上传的后端代码展示(基于Springboot)

    个人头像手动上传(基于Springboot的后端代码展示) 场景一:一般来说,对于微信小程序,很多时候登录的场景都是,"是否同意上传微信头像":"获取您的用户信息&quo ...

  8. 基于SpringBoot+SSM实现的Dota2资料库智能管理平台

    基于SpringBoot+SSM实现的Dota2资料库智能管理平台 Dota2资料库智能管理平台的设计与实现 摘    要 当今社会,游戏产业蓬勃发展,如PC端的绝地求生.坦克世界.英雄联盟,再到移动 ...

  9. SpringBoot后台管理+Uniapp(混合APP)前端 之 酒店住宿+景点下单管理系统(SpringBoot前后端分离)

    酒店住宿+景点下单管理系统(SpringBoot前后端分离) 之 SpringBoot后台管理+Uniapp(混合APP)前端 SpringBoot前后端分离项目-Thymeleaf模板引擎景区旅游管 ...

最新文章

  1. 浅谈使用SQLBulkCopy批量数据入库
  2. 洛谷 - P1381 - 单词背诵 - 哈希 - 尺取
  3. 2008年最受欢迎的资源TOP100
  4. 【aspnetcore】添加自定义json配置文件
  5. 权限管理快速入门_01
  6. java运行时异常与一般异常有何异同_JVM | 虚拟机运行时数据区域划分和使用详解...
  7. 从C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\mt.exe返回错误
  8. mysql 代替分号_php – mysql FIND_IN_SET()用分号代替逗号
  9. shell 脚本初习
  10. AI2(App Inventor 2)离线版服务器(AI伴侣2.47版)
  11. c语言文件压缩与解压缩实验报告,哈弗曼树文件压缩与解压实验报告(C语言).doc...
  12. vue实现数字翻页动画
  13. 【UE4 虚幻引擎 学习笔记二】引擎内按键输入简单设置
  14. 数据分析专题报告范文6篇_【2018最新】数据分析报告范文-优秀word范文 (5页)
  15. redis进行对比时有对应的key却还是返回false
  16. 2021高考秦安一中成绩查询,2021年天水高考状元是谁分数多少分,历年天水高考状元名单...
  17. 会声会影X3常见问题80个解答
  18. 前端三剑客 HTML、CSS、JavaScript 入门到上手
  19. 为多孔介质的当量直径_CFX多孔介质模型介绍
  20. 北京城市总体规划 (2016年—2035年)附图

热门文章

  1. 猜字小游戏java方法体_java实现猜字小游戏
  2. 服装ERP丨样衣管理系统解决方案
  3. 个人永久性免费-Excel催化剂功能第99波-手机号码归属地批量查询
  4. 整理一些微信小程序面试资料
  5. 【招生目录和招生简章】中国科学院大学 中科院沈阳计算所 中国矿业大学 广州大学 北京人民公安大学...
  6. Win8/10的UI风格——Metro UI
  7. Android开发之旅:环境搭建及HelloWorld---吴秦(Tyler)
  8. 深入浅出区块链——零知识证明
  9. TheBrain已丧失人气?突然火爆的Roam有何与众不同?
  10. uniapp蓝牙连接热敏打印机