Springboot 通过流返回文件
本人的文件是放在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 通过流返回文件相关推荐
- post方式返回文件流实现前端blob下载,responseType: ‘blob‘无效
responseType: 'blob' 一般情况下,下载分为好几种,但是常用的是get下载文件流直接下载 post下载文件流是很少见的,但是鉴于参数太多,不能走get 只能走post下载,post下 ...
- react前端下载后端返回文件流(文件流下载excel、csv)
以前用vue框架的时候,写过不少下载上传的东西,当然包括后端返回文件流供前端下载,现在用react,牵扯到这个功能,又提起来说,有两种下载类型,一种是Excel,一种是Csv. 首先后端返回这种: 或 ...
- POI动态导出Excel,后台返回文件流,前端responseType格式下载
针对各个表的数据导出,实现的代码往往相似,出于这个目的,开启自己代码简略之旅.本文是针对.xls的excel文件. 1.思路描述 ①.确定各个模板的.xls文件格式 ②.定义模板的存在的参数,如第一行 ...
- PDF.js + Vue 浏览器以只读方式打开PDF,后台返回文件流,前端实现预览pdf
如果你想光前端完成 office(xls,doc,ppt) 文件的预览,只能提供你这些库来使用 PDF http://mozilla.github.com/pdf.js/ XLS https://gi ...
- JAVA下载 PDF 到本地 或 返回文件流
@Slf4j public class PDFUtils {/**** @param fileUrl 文件路径* @param saveUrl 文件保存路径* @param fileName 文件名称 ...
- Linux C语言 fileno(返回文件流所使用的文件描述词)
fileno(返回文件流所使用的文件描述词) 相关函数 open,fopen 表头文件 #include<stdio.h> 定义函数 int fileno(FILE * stream); ...
- springboot并发上传文件_springboot实现单文件和多文件上传
本文实例为大家分享了springboot实现单文件/多文件上传的具体代码,供大家参考,具体内容如下 package com.heeexy.example.controller; import com. ...
- SpringBoot+Vue上传文件
最近在研究SpringBoot+Vue的文件上传,踩了不少坑.现在将正确的文件上传流程分享一下. 一.前端采用ElementUI组件 前端页面完整代码: <template><el- ...
- SpringBoot2 | SpringBoot启动流程源码分析(一)
首页 博客 专栏·视频 下载 论坛 问答 代码 直播 能力认证 高校 会员中心 收藏 动态 消息 创作中心 SpringBoot2 | SpringBoot启动流程源码分析(一) 置顶 张书康 201 ...
最新文章
- MySQL server has gone away报错原因分析及解决办法
- java.net.SocketException四大异常解决方案---转
- 北风设计模式课程---7、建造者模式
- android 安装第三方app,Android识别预装的第三方App方法实例
- 电脑摄像头未能创建连接服务器,Win7中摄像头提示未能创建视频预览错误怎么办...
- 鸟书shell 学习笔记(一) shell专注于概念和命令
- Postgresql安装配置win版本
- mysql与linux版本区别_MySQL各版本的区别
- 迈达斯cdn安装_CDN安装
- ICC II 2 placement
- html5 在线视频编辑器,一种基于html5的多轨道视频编辑的方法及系统与流程
- win xp安装详细教程
- 元宇宙场景技术实践|实现“虚拟人”自由
- JAVAEE大项目(作业提交/管理系统)
- Android 图形架构之一 ——概述
- GEE实现图像随机森林分类
- 【产品】如何了解行业需求、痛点和发展机会
- 应用安全系列之二十三:SSRF
- 概说SEO中的过度优化
- 5.22非常虚伪的集训总结