欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

springboot如何获取相对路径文件夹下静态资源的方法

程序员文章站 2023-12-05 20:04:52
今日遇到一个问题:springboot需要获取到一个自定义名称文件夹下的静态资源(图片等),并且文件夹的路径不在classpath下面,而是一个相对路径。 一开始使用修改...

今日遇到一个问题:springboot需要获取到一个自定义名称文件夹下的静态资源(图片等),并且文件夹的路径不在classpath下面,而是一个相对路径。

一开始使用修改配置文件的方式:

# 配置静态资源访问前缀
spring.mvc.static-path-pattern=*/**
# 配置静态资源路径,默认配置失效
spring.resources.static-locations=../upload

 发现并不行,无法解析出相对路径。

后面通过自定义静态资源映射配置类实现了:

@configuration
@enableconfigurationproperties({ filehanderproperties.class })
public class filehandleconfig extends webmvcconfigureradapter {
 
  @autowired
  private filehanderproperties filehanderproperties;
 
  @override
  public void addresourcehandlers(resourcehandlerregistry registry) {
    registry.addresourcehandler(filehanderproperties.getresource())
        .addresourcelocations("file:" + filehanderproperties.getfiledir()+"//");
    super.addresourcehandlers(registry);
  }
 
}

然后再在配置文件中配置springboot如何获取相对路径文件夹下静态资源的方法

通过自定义的配置文件读取类filehanderproperties获取配置的参数,这样就可以获取到相对路径中的静态资源了。在浏览器中直接输入url,就可以得到图片。

关键点:

1.addresourcelocations 里面要加前缀"file:" ,这样才能获取到自定义目录下的文件。用"classpath:"只能获取到classpath下的资源;

2.静态资源访问前缀 (即addresourcehandler内的参数)要写成*/**,这样才可以获取到upload文件夹下所有的文件(包括upload文件夹里面的文件夹如imgupload里的资源,只要在url里多加/imgupload),而且在url输入的时候可以不用写upload (如果你想写,就把前缀改为 upload/** ,这样就必须在url里写上upload才能获取到资源);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。