Spring Boot下载文件
SpringBoot下载文件
前几天项目有需求, 需要下载项目中生成的csv文件, 虽然之前也做过下载文件, 类似的流程也明白, 但是当时使用的spring + springmvc的项目, 而且服务器使用的tomcat, 现在项目使用的是springboot, 运行的是个jar包, 所以整的时候也出了几个小问题, 还好下载功能还是很简单的, 话不多说, 下面直接戳重点!
方式一
在yml或properties文件中配置spring.resources.static-locations
spring.resources.static-locations中配置的是静态资源位置, 这里配置了什么, 那么所有的静态资源就会到这里查找, 所以一般这里都会写上classpath:/static,classpath:/public,classpath:/resources,classpath:/META-INF/resources, 这是一个列表性的配置,查找文件时会依赖于配置的先后顺序依次进行, 现在我们要找到下载的文件, 可以继续往后添加, 例如, 现在我的项目访问是localhost:8081, 我要下载的文件是 test1.csv, 而我的csv文生成在本地盘符D:\csv中, 这时候我们就在spring.resources.static-locations后面继续添加", file:D:/csv/", 这就表示按照顺序找文件的时候, 前面的配置如果找不到, 就会到csv目录中查找, 而我们现在要下载文件的方式就是访问, localhost:8081/test1.csv 即可.
方式二
编码方式扩展springmvc的功能, 添加静态资源访问映射
创建config类, 实现WebMvcConfigurer接口, 实现其中的方法addResourceHandlers, 注册静态资源访问路径, 指定访问的路径到哪里去找, 代码如下:
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
/**
* 添加静态访问资源映射
*
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//
registry.addResourceHandler("/csv/**").addResourceLocations("file:D:/csv/");
}
}
上面代码的意思就是当我访问静态资源路径是localhost:8081/csv/**这样类似的路径的时候, 就会到D盘的csv目录中找, 现在访问localhost:8081/csv/test1.csv就可以下载下来了, 其中的handler和location根据你自己的需求更换即可
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)