SpringBoot中使用yml配置文件以及配置类实现文件上传下载路径的修改
场景
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配置文件以及配置类实现文件上传下载路径的修改相关推荐
- SpringBoot图文教程4—SpringBoot 实现文件上传下载(亲测)
SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+案例 思维导图」「基础篇上」 SpringBoot图文教程2-日志的使用「logback」「log4j」 Spring ...
- springboot改文件头_SpringBoot图文教程4—SpringBoot 实现文件上传下载
有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 文章结尾配套自测面试题,学完技术自我测试更扎实 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例 ...
- 基于华为云obs实现文件上传下载(技术栈mysql+springboot+Maven+jsp+java)的技术分享
基于华为云obs实现文件上传下载(技术栈mysql+springboot+jsp+java)的技术分享 obs实现文件上传下载 前言 一.OBS是什么? 二.使用步骤 1.1 前期准备 2 工具的内容 ...
- springboot文件上传下载实战 —— 登录功能、展示所有文件
springboot文件上传下载实战 创建项目 pom.xml 数据库建表与环境准备 建表SQL 配置文件 application.properties 整体架构 前端页面 登录页面 login.ht ...
- centos nfs java_CentOS下安装配置NFS并通过Java进行文件上传下载
1:安装NFS (1)安装 yum install nfs-utils rpcbind (2)启动rpcbind服务 systemctl restart rpcbind.service 查看服务状态 ...
- ASP.NET中文件上传下载方法集合
asp.net 2008-08-23 21:10:35 阅读0 评论0 字号:大中小 订阅 ASP.NET中文件上传下载方法集合 文件的上传下载是我们在实际项目开发过程中经常需要用到的技术,这里给 ...
- ASP.NET中常用的文件上传下载方法
ASP.NET中常用的文件上传下载方法 文件的上传下载是我们在实际项目开发过程中经常需要用到的技术,这里给出几种常见的方法,本文主要内容包括: 1.如何解决文件上传大小的限制 2.以文件形式保存到服务 ...
- springboot文件上传下载实战 ——文件上传、下载、在线打开、删除
springboot文件上传下载实战 文件上传 文件上传核心 UserFileController 文件上传测试 文件下载与在线打开 文件下载.在线打开核心 UserFileController 文件 ...
- springboot:实现文件上传下载实时进度条功能【附带源码】
0. 引言 记得刚入行的时候,做了一个文件上传的功能,因为上传时间较久,为了用户友好性,想要添加一个实时进度条,显示进度.奈何当时技术有限,查了许久也没用找到解决方案,最后不了了之. 近来偶然想到这个 ...
最新文章
- MySQL 学习笔记(9)— 事务控制语句、事务属性以及并发和隔离级别
- ASP中关于全局页面的作用 asax文件
- php数组排序面试题,PHP按子数组值对数组排序
- JS判断当前的浏览器类型
- 去中心化NFT交易生态系统Mochi.Market将在DAO Pad进行SHO
- bzoj 3209 花神的数论题 —— 数位DP
- 爬虫,酷我音乐接口解析
- 对数几率回归(逻辑回归)
- Apollo 星火计划踩坑记录 dreamview启动报错“No such file or directory: ‘ping‘: ‘ping‘”
- 征服账号服务器,最新中文征服服务端(带架设教程+客户端补丁+需要的工具)10.13日更新...
- postman接口自动化测试之判断结果是否符合预期
- 如何做分销网站的关键词研究
- CLRS第五章思考题
- 领域驱动设计实现疑难解答(一):如何分包及组织工程结构
- PageDirty、PageWriteback、PageReclaim、PageReferenced、PageUptodate等page的各个状态源码讲解
- 数据结构之排序【归并排序和快排的顶级优化和快排的三种原理的实现及分析】 内含动态演示图
- uniapp获取手机号(详细教程附代码)
- sed -i 替换内容中有变量或特殊字符
- 蒙特卡洛计算亚式期权以及希腊字母计算
- C语言程序设计第二版呼克佑第一章C语言与程序设计课后习题简答题答案
热门文章
- 服务器监控工具_系统管理员不可错过的 6 款服务器监控工具
- python中简述对象和类的关系_Python学习笔记(七)对象和类
- python自动抓取指定信息_使用python自动转发抓取的网页信息
- mysql数据库周考_周考三
- mysql vpformysql引擎_MySQL InnoDB引擎B+树索引简单整理说明
- 关于Qstring.replace传参Qstring.length为0引起程序退出的记录
- 关于vs编码格式UTF8中文处理方式
- java链接mysql数据库格式_JDBC URL连接常用数据库格式
- xgboost与coo_matrix
- 论述类文本知识框架_考前知识梳理与答题技巧之论述类文本