场景

SpringBoot+thymeleaf实现文件下载或者实现文件上传需要配置文件上传路径的地方,

不要写为固定路径,在配置文件中指定文件路径,代码中直接引用。

避免以后文件路径修改后需要修改业务代码。

SpringBoot+thymeleaf实现文件下载参照:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/88786370

实现

找到SpringBoot项目中的所使用的配置文件application,这里是开发环境,并且是yml文件。

添加如下自定义配置的值

# 自定义配置
ws:excelTemplateDpwloadPath: C:\release\sites\upload\excel\template

注意yml严格的缩进格式

注意excelTemplateDpwloadPath: 与C:\release\sites\upload\excel\template要有空格!!!

这里配置的路径就与要实现文件下的路径相对应。

新建config包并在config包下新建ConfigProperties.java

package com.ws.bus.config;import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;/*** @author badado* @version 1.0* @see**/
@Component
@ConfigurationProperties(prefix = ConfigProperties.PREFIX)
public class ConfigProperties {public static  final String PREFIX = "ws";private String excelTemplateDpwloadPath;public String getExcelTemplateDpwloadPath() {return excelTemplateDpwloadPath;}public void setExcelTemplateDpwloadPath(String excelTemplateDpwloadPath) {this.excelTemplateDpwloadPath = excelTemplateDpwloadPath;}}

声明所使用的文件路径的属性名,并生成set和get方法。

在具体要使用的Controller中使用时:

@Controller
@RequestMapping("/wmsReceiveOrder")
@EnableConfigurationProperties(ConfigProperties.class)
public class WmsReceiveOrderController {@Autowiredprivate ConfigProperties configProperties;@Description("模板下载")@RequestMapping("/downloadOnlineLearnMaterials")public String downloadFile(HttpServletRequest request, HttpServletResponse response) {String fileName = "template.xlsx";// 设置文件名,根据业务需要替换成要下载的文件名if (fileName != null) {//设置文件路径String realPath = configProperties.getExcelTemplateDpwloadPath();//这里使用配置类配置文件路径File file = new File(realPath , fileName);if (file.exists()) {response.setContentType("application/force-download");// 设置强制下载不打开response.addHeader("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;}
}

这样就可以通过

String realPath = configProperties.getExcelTemplateDpwloadPath();

获取设置的文件下载的路径,以后修改路径时直接可以通过配置文件修改。

SpringBoot中使用yml配置文件以及配置类实现文件上传下载路径的修改相关推荐

  1. SpringBoot图文教程4—SpringBoot 实现文件上传下载(亲测)

    SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+案例 思维导图」「基础篇上」 SpringBoot图文教程2-日志的使用「logback」「log4j」 Spring ...

  2. springboot改文件头_SpringBoot图文教程4—SpringBoot 实现文件上传下载

    有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 文章结尾配套自测面试题,学完技术自我测试更扎实 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例 ...

  3. 基于华为云obs实现文件上传下载(技术栈mysql+springboot+Maven+jsp+java)的技术分享

    基于华为云obs实现文件上传下载(技术栈mysql+springboot+jsp+java)的技术分享 obs实现文件上传下载 前言 一.OBS是什么? 二.使用步骤 1.1 前期准备 2 工具的内容 ...

  4. springboot文件上传下载实战 —— 登录功能、展示所有文件

    springboot文件上传下载实战 创建项目 pom.xml 数据库建表与环境准备 建表SQL 配置文件 application.properties 整体架构 前端页面 登录页面 login.ht ...

  5. centos nfs java_CentOS下安装配置NFS并通过Java进行文件上传下载

    1:安装NFS (1)安装 yum install nfs-utils rpcbind (2)启动rpcbind服务 systemctl restart rpcbind.service 查看服务状态 ...

  6. ASP.NET中文件上传下载方法集合

    asp.net 2008-08-23 21:10:35 阅读0 评论0   字号:大中小 订阅 ASP.NET中文件上传下载方法集合 文件的上传下载是我们在实际项目开发过程中经常需要用到的技术,这里给 ...

  7. ASP.NET中常用的文件上传下载方法

    ASP.NET中常用的文件上传下载方法 文件的上传下载是我们在实际项目开发过程中经常需要用到的技术,这里给出几种常见的方法,本文主要内容包括: 1.如何解决文件上传大小的限制 2.以文件形式保存到服务 ...

  8. springboot文件上传下载实战 ——文件上传、下载、在线打开、删除

    springboot文件上传下载实战 文件上传 文件上传核心 UserFileController 文件上传测试 文件下载与在线打开 文件下载.在线打开核心 UserFileController 文件 ...

  9. springboot:实现文件上传下载实时进度条功能【附带源码】

    0. 引言 记得刚入行的时候,做了一个文件上传的功能,因为上传时间较久,为了用户友好性,想要添加一个实时进度条,显示进度.奈何当时技术有限,查了许久也没用找到解决方案,最后不了了之. 近来偶然想到这个 ...

最新文章

  1. MySQL 学习笔记(9)— 事务控制语句、事务属性以及并发和隔离级别
  2. ASP中关于全局页面的作用 asax文件
  3. php数组排序面试题,PHP按子数组值对数组排序
  4. JS判断当前的浏览器类型
  5. 去中心化NFT交易生态系统Mochi.Market将在DAO Pad进行SHO
  6. bzoj 3209 花神的数论题 —— 数位DP
  7. 爬虫,酷我音乐接口解析
  8. 对数几率回归(逻辑回归)
  9. Apollo 星火计划踩坑记录 dreamview启动报错“No such file or directory: ‘ping‘: ‘ping‘”
  10. 征服账号服务器,最新中文征服服务端(带架设教程+客户端补丁+需要的工具)10.13日更新...
  11. postman接口自动化测试之判断结果是否符合预期
  12. 如何做分销网站的关键词研究
  13. CLRS第五章思考题
  14. 领域驱动设计实现疑难解答(一):如何分包及组织工程结构
  15. PageDirty、PageWriteback、PageReclaim、PageReferenced、PageUptodate等page的各个状态源码讲解
  16. 数据结构之排序【归并排序和快排的顶级优化和快排的三种原理的实现及分析】 内含动态演示图
  17. uniapp获取手机号(详细教程附代码)
  18. sed -i 替换内容中有变量或特殊字符
  19. 蒙特卡洛计算亚式期权以及希腊字母计算
  20. C语言程序设计第二版呼克佑第一章C语言与程序设计课后习题简答题答案

热门文章

  1. 服务器监控工具_系统管理员不可错过的 6 款服务器监控工具
  2. python中简述对象和类的关系_Python学习笔记(七)对象和类
  3. python自动抓取指定信息_使用python自动转发抓取的网页信息
  4. mysql数据库周考_周考三
  5. mysql vpformysql引擎_MySQL InnoDB引擎B+树索引简单整理说明
  6. 关于Qstring.replace传参Qstring.length为0引起程序退出的记录
  7. 关于vs编码格式UTF8中文处理方式
  8. java链接mysql数据库格式_JDBC URL连接常用数据库格式
  9. xgboost与coo_matrix
  10. 论述类文本知识框架_考前知识梳理与答题技巧之论述类文本