本人的文件是放在resource/templates目录下,截图如下

controller类如下

    @GetMapping(value = "/downfile")public void download(HttpServletResponse response) throws IOException {String fileName = "template.xlsx";// 设置信息给客户端不解析String type = new MimetypesFileTypeMap().getContentType(fileName);// 设置contenttype,即告诉客户端所发送的数据属于什么类型response.setHeader("Content-type",type);// 设置编码String code = new String(fileName.getBytes("utf-8"), "iso-8859-1");// 设置扩展头,当Content-Type 的类型为要下载的类型时 , 这个信息头会告诉浏览器这个文件的名字和类型。response.setHeader("Content-Disposition", "attachment;filename=" + code);response.setContentType("application/octet-stream;charset=ISO8859-1");response.addHeader("Pargam", "no-cache");response.addHeader("Cache-Control", "no-cache");DownLoadUtils.download(fileName, response);}

工具类DownLoadUtils如下

public class DownLoadUtils {public static void download(String filename, HttpServletResponse res) throws IOException {// 发送给客户端的数据// 读取filenameClassPathResource classPathResource = new ClassPathResource("templates/"+filename);long length = classPathResource.getFile().length();res.addHeader("Content-Length",String.valueOf(length));OutputStream outputStream = res.getOutputStream();byte[] buff = new byte[1024];BufferedInputStream bis = null;InputStream inputStream =classPathResource.getInputStream();bis = new BufferedInputStream(inputStream);int i = bis.read(buff);while (i != -1) {outputStream.write(buff, 0, buff.length);outputStream.flush();i = bis.read(buff);}bis.close();outputStream.close();}
}

注意点

response.addHeader("Content-Length",String.valueOf(file.length()));

如果不加这句代码,下载下来的文件会 在打开前提示修复,文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配

Springboot 通过流返回文件相关推荐

  1. post方式返回文件流实现前端blob下载,responseType: ‘blob‘无效

    responseType: 'blob' 一般情况下,下载分为好几种,但是常用的是get下载文件流直接下载 post下载文件流是很少见的,但是鉴于参数太多,不能走get 只能走post下载,post下 ...

  2. react前端下载后端返回文件流(文件流下载excel、csv)

    以前用vue框架的时候,写过不少下载上传的东西,当然包括后端返回文件流供前端下载,现在用react,牵扯到这个功能,又提起来说,有两种下载类型,一种是Excel,一种是Csv. 首先后端返回这种: 或 ...

  3. POI动态导出Excel,后台返回文件流,前端responseType格式下载

    针对各个表的数据导出,实现的代码往往相似,出于这个目的,开启自己代码简略之旅.本文是针对.xls的excel文件. 1.思路描述 ①.确定各个模板的.xls文件格式 ②.定义模板的存在的参数,如第一行 ...

  4. PDF.js + Vue 浏览器以只读方式打开PDF,后台返回文件流,前端实现预览pdf

    如果你想光前端完成 office(xls,doc,ppt) 文件的预览,只能提供你这些库来使用 PDF http://mozilla.github.com/pdf.js/ XLS https://gi ...

  5. JAVA下载 PDF 到本地 或 返回文件流

    @Slf4j public class PDFUtils {/**** @param fileUrl 文件路径* @param saveUrl 文件保存路径* @param fileName 文件名称 ...

  6. Linux C语言 fileno(返回文件流所使用的文件描述词)

    fileno(返回文件流所使用的文件描述词) 相关函数 open,fopen 表头文件 #include<stdio.h> 定义函数 int fileno(FILE * stream); ...

  7. springboot并发上传文件_springboot实现单文件和多文件上传

    本文实例为大家分享了springboot实现单文件/多文件上传的具体代码,供大家参考,具体内容如下 package com.heeexy.example.controller; import com. ...

  8. SpringBoot+Vue上传文件

    最近在研究SpringBoot+Vue的文件上传,踩了不少坑.现在将正确的文件上传流程分享一下. 一.前端采用ElementUI组件 前端页面完整代码: <template><el- ...

  9. SpringBoot2 | SpringBoot启动流程源码分析(一)

    首页 博客 专栏·视频 下载 论坛 问答 代码 直播 能力认证 高校 会员中心 收藏 动态 消息 创作中心 SpringBoot2 | SpringBoot启动流程源码分析(一) 置顶 张书康 201 ...

最新文章

  1. MySQL server has gone away报错原因分析及解决办法
  2. java.net.SocketException四大异常解决方案---转
  3. 北风设计模式课程---7、建造者模式
  4. android 安装第三方app,Android识别预装的第三方App方法实例
  5. 电脑摄像头未能创建连接服务器,Win7中摄像头提示未能创建视频预览错误怎么办...
  6. 鸟书shell 学习笔记(一) shell专注于概念和命令
  7. Postgresql安装配置win版本
  8. mysql与linux版本区别_MySQL各版本的区别
  9. 迈达斯cdn安装_CDN安装
  10. ICC II 2 placement
  11. html5 在线视频编辑器,一种基于html5的多轨道视频编辑的方法及系统与流程
  12. win xp安装详细教程
  13. 元宇宙场景技术实践|实现“虚拟人”自由
  14. JAVAEE大项目(作业提交/管理系统)
  15. Android 图形架构之一 ——概述
  16. GEE实现图像随机森林分类
  17. 【产品】如何了解行业需求、痛点和发展机会
  18. 应用安全系列之二十三:SSRF
  19. 概说SEO中的过度优化
  20. 5.22非常虚伪的集训总结

热门文章

  1. 阿里P8架构师谈(9):流量高峰时期的性能瓶颈有哪些、以及如何来解决
  2. 怎么计算机删磁盘下游戏,永远留在硬盘里!PC玩家舍不得删除的经典单机游戏(一)...
  3. 夺命六问Kubernetes 架构原理
  4. socket网络通信
  5. 家长如何挑选学生护眼台灯?2023选这样的台灯更护眼
  6. R-forestplot包| HR结果绘制森林图
  7. 5G智能灯杆和智慧合杆的区别和功能介绍
  8. 【UE4】3DMAX制作骨骼蒙皮
  9. CSSCI(中文社会科学引文索引)介绍
  10. 2021 华中科技大学软件学院软件体系结构考试题回忆