SpringBoot下载文件

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根据你自己的需求更换即可

原文地址:https://www.cnblogs.com/no-celery/p/14132081.html