使用静态资源的访问方式访问指定文件
背景:
为公司某个测试环境排查bug时发现问题:公司有定时生成报表的业务,测试环境发现文件夹下已经生成文件,但是下载时却访问404。
排查发现static-locations:
缺少文件夹的映射,以前未使用过这种方式下载文件,所以写一篇简单的入门文章学习一下。
优点:
- 可以直接通过URL访问图片(配合文件上传,然后返回URL给页面展示使用十分方便)
- 需要下载文件时只用知道文件名就可以通过URL下载,不许要单独写接口
- 一些静态数据可以以json的格式存放,使用时直接访问不用写接口
使用方法
添加配置
spring:
application:
name: demo006
mvc:
static-path-pattern: /**
resources:
static-locations: classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:${
spring.imagePath},file:${
spring.excelPath},file:${
spring.jsonPath}
#路径需要按需求修改
imagePath: /Users/zhangyuhang/Git_Repository/exercise-spring/demo006/upload-file/images/
excelPath: /Users/zhangyuhang/Git_Repository/exercise-spring/demo006/upload-file/excel/
jsonPath: /Users/zhangyuhang/Git_Repository/exercise-spring/demo006/upload-file/json/
-
spring.mvc.static-path-pattern代表的含义是我们应该以什么样的路径来访问静态资源,换句话说,只有静态资源满足什么样的匹配条件,Spring Boot才会处理静态资源请求,以官方配置为例:
# 这表示只有静态资源的访问路径为/resources/**时,才会处理请求 spring.mvc.static-path-pattern=/resources/**
假定采用默认的配置端口,那么只有请求地址类似于“http://localhost:8080/resources/123.png”时,Spring Boot才会处理此请求,处理方式是将根据模式匹配后的文件名查找本地文件,那么应该在什么地方查找本地文件呢?这就是“spring.resources.static-locations”的作用了。
-
spring.resources.static-locations用于告诉Spring Boot应该在何处查找静态资源文件,这是一个列表性的配置,查找文件时会依赖于配置的先后顺序依次进行,默认的官方配置如下:
spring.resources.static