SpringBoot映射本地图片,外界可通过网络路径发送 HTTP 请求访问该图片。

在工作中,我们会把图片保存到服务器本地的某个目录下,然后前端 image 标签的 src 属性,填写网络路径即可访问到该图片,这该如何配置呢?有两种方法:

  1. 第一种方法,我们可以修改 application.yml 文件
    1
    2
    3
    4
    5
    6
    7
    8
    spring:
    web:
    resources:
    # 支持本地图片上传之后的链接,其中 file:///d的用于win系统,后面的file: 适用于mac/linux系统
    static-locations:
    - classpath:/static/
    - file:///d:/tmp/storage/
    - file:/tmp/storage/
    这个方法有个弊端,在某些场景下,可能会无效,比如你的项目中写了某些过滤器等原因。另外,使用yml配置,也会使你静态访问路径失效
  2. 第二种方法,添加 webConfig 配置类
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @Configuration
    public class WebConf extends WebMvcConfigurationSupport {

    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/", "classpath:/META-INF/resources/webjars/");
    //通过image访问本地的图片
    registry.addResourceHandler("/image/**").addResourceLocations("file:/tmp/storage");
    }
    }