SpringBoot项目文件下载
目录
- 搭建 `SpringBoot` 项目
- `Maven` 依赖
- `application.properties`
- 前端页面
- 后台 `Controller`
搭建 SpringBoot
项目
Maven
依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId>
</dependency>
application.properties
spring.mvc.view.prefix=classpath:/templates/
spring.mvc.view.suffix=.html
spring.thymeleaf.cache=false
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.emode=HTML
在 resources/static
目录下添加一个名字为 obj.jpg
的图片
前端页面
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml"><head><meta charset="UTF-8"><title>文件下载</title></head><body><a th:href="@{/download1?fileName=obj}">方式一:下载文件</a><br><a th:href="@{/download2?fileName=obj}"方式二:>文件</a><br><a th:href="@{/download3?fileName=application}">方式三:文件</a><br></body>
</html>
后台 Controller
@Controller
public class FileDownloadController {@GetMapping(path = "/download1")public ResponseEntity<InputStreamResource> downloadFile(String fileName) throws IOException {String filePath = "E:/Demo/src/main/resources/static/" + fileName + ".jpg";FileSystemResource fsr = new FileSystemResource(filePath);HttpHeaders headers = new HttpHeaders();headers.add("Cache-Control", "no-cache, no-store, must-revalidate");headers.add("Content-Disposition", String.format("attachment; filename=\"%s\"", fsr.getFilename()));headers.add("Pragma", "no-cache");headers.add("Expires", "0");return ResponseEntity.ok().headers(headers).contentLength(fsr.contentLength()).contentType(MediaType.parseMediaType("application/octet-stream")).body(new InputStreamResource(fsr.getInputStream()));}@GetMapping(path = "/download2")public void getDownload(@RequestParam("fileName") String fileName, HttpServletRequest request, HttpServletResponse response) {String filePath = "E:/Demo/src/main/resources/static/" + fileName + ".jpg";File downloadFile = new File(filePath);ServletContext context = request.getServletContext();String mimeType = context.getMimeType(filePath);if (mimeType == null) {mimeType = "application/octet-stream";System.out.println("context getMimeType is null");}System.out.println("MIME type: " + mimeType);response.setContentType(mimeType);response.setContentLength((int) downloadFile.length());String headerKey = "Content-Disposition";String headerValue = String.format("attachment; filename=\"%s\"",downloadFile.getName());response.setHeader(headerKey, headerValue);try {InputStream myStream = new FileInputStream(filePath);IOUtils.copy(myStream, response.getOutputStream());response.flushBuffer();} catch (IOException e) {e.printStackTrace();}}// 下载文件到用户桌面@ResponseBody@RequestMapping(path ="/download3")public String downloadFile(String fileName, HttpServletResponse response) {if (fileName != null) {// 设置文件路径String realPath = "E:/Demo/src/main/resources/";fileName = fileName + ".yml";File file = new File(realPath, fileName);if (file.exists()) {response.setContentType("application/octet-stream");//response.setHeader("content-type", "application/octet-stream");response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);// 设置文件名byte[] buffer = new byte[1024];FileInputStream fis = null;BufferedInputStream bis = null;try {fis = new FileInputStream(file);bis = new BufferedInputStream(fis);OutputStream os = response.getOutputStream();int i = bis.read(buffer);while (i != -1) {os.write(buffer, 0, i);i = bis.read(buffer);}System.out.println("success");} catch (Exception e) {e.printStackTrace();} finally {if (bis != null) {try {bis.close();} catch (IOException e) {e.printStackTrace();}}if (fis != null) {try {fis.close();} catch (IOException e) {e.printStackTrace();}}}}}return null;}
}
SpringBoot项目文件下载相关推荐
- Tekton构建Springboot项目操作手册
Tekton构建前后端项目操作手册--本地Harbor仓库版本 概述 前端Vue项目,后端Springboot项目,后端项目使用Dubbo+Zookeeper+PostgreSQL框架. 镜像版本,本 ...
- springboot项目打包成exe文件
首先需要去官网下载exe4j文件下载安装 这一步直接next 选择 JAR in EXE的选项 直接next 输入文件名称和输出路径 按图填写完之后不用着急点击下一步 需要配置兼容64位的软件配置 V ...
- spring-boot项目整合obs服务器-华为云
目录 前言 1.购买服务并从官网获得我们项目所需的配置参数 1-1.登录华为云 1-2.进入控制台 1-3.创建桶 1-4.获取sk.ak 2.spring-boot项目集成OBS服务器 2-1 ...
- SpringBoot中文件下载、拦截器、war包部署、jar包部署
3. SpringBoot中文件下载 将可以被下载资源放在磁盘的 D:\springbootcodes\springboot_day6\download 路径 这里我们使用jsp开发 引入依赖使tom ...
- Dockerfile springboot项目拿走即用,将yml配置文件从外部挂入容器
Dockerfile 将springboot项目jar包打成镜像,并将yml配置文件外挂. # 以一个镜像为基础,在其上进行定制.就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜 ...
- SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos
SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...
- win10安装docker并结合Idea2018.1部署springboot项目
一.准备工作 1..工具:win10,idea2018,maven3.5,jdk8 二.win10安装docker 1.win10安装docker:http://www.runoob.com/dock ...
- 关于SpringBoot项目通过jar包启动之后无法读取项目根路径静态资源
前言:这个是昨天晚上在部署一个项目的时候发现的,在此记录一下 关于SpringBoot项目通过jar包启动之后无法读取项目根路径静态资源 问题描述 在部署了一个项目之后,打开项目页面进行测试,发现有一 ...
- 使用idea创建springboot项目并打成war包发布到weblogic上...
部署tomcat也是类似的,但是需要注意项目配置的路径,或者直接将项目放到webapp的ROOT目录下. 使用工具:intelliJ IDEA2016.3, jdk1.8 ,weblogic12 一 ...
- SpringBoot项目打包war部署到服务器去掉项目名所遇到的坑
个人资源与分享网站:http://xiaocaoshare.com/ 前言 将SpringBoot项目打成war主要是方便自己后期维护,也就是每次更新网站的时候不需要打成jar包,主要是文件太大,复制 ...
最新文章
- luogu P2759 奇怪的函数 二分答案+数论
- 倍增LCA NOIP2013 货车运输
- 美媒:中关村取代硅谷获评全球最大科技中心
- 使用商业模式的九大模块去分析京东的商业模式_商业模式—筑基篇(1)
- COM_TEXT_TIMESTAMP_SET
- logback日志配置
- python如何读取字典的关键字_python提取字典key列表的方法
- springboot(三)-使用JSP
- 计算机辐射有那些预防措施,冰箱辐射有多大 冰箱辐射防范措施
- websoc是什么可以卸载吗_购房诚意金是什么意思?可以退吗?
- Sentinel降级_异常数_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0041
- 排序算法专题-插入排序
- 分子重构技术_4. 串珠模型重构
- MSP430 MSP430单片机软件开发集成环境CCS
- 图的遍历 (深度优先遍历和广度优先遍历)
- python pandas合并多个excel,Python pandas实现excel工作表合并功能详解
- spark-sql字段级血缘关系实现
- xss.haozi.me练习通关
- 俄罗斯最大的盗版资源网站,解封了!
- JS实现点击按钮图片左右切换、点击图片按钮出现下拉菜单
热门文章
- 自动驾驶7-4 自动驾驶汽车简介全面总结 Congratulations on Completing Course 1
- 机器学习- 吴恩达Andrew Ng - week3-1 Classification
- 算法:分离链表为两部分,小于某个值都在左边,大于等于某个值在右边 Partition List
- 使用案例_Excel中LOOKUP函数的使用案例
- 微型计算机主机作用,微型计算机的主机包括()。
- matlab水蒸气焓值计算_暖通干货,巧析焓湿图,焓湿图如何应用?一读就懂不容错过...
- python redis模块常用_python redis 模块
- Numpy快速入门教程
- 机器学习-KMeans聚类 K值以及初始类簇中心点的选取
- 导入es数据_有道精品课实时数据中台建设实践