Springboot配置通过URL访问图片(静态资源)

一、确保为web项目,创建WebConfig 实现WebMvcConfigurer (推荐)或 继承WebMvcConfigurationSupport

说明:

  • SpringBoot2.0 配置WebMvc 需extends WebMvcConfigurationSupportimplements WebMvcConfigurer
  • Spring Boot中只能有一个WebMvcConfigurationSupport配置类是真正起作用的,对于这个问题,其实可以通过implements WebMvcConfigurer来解决,多个不同的配置类实现这个接口后的配置都可以正常运行。
  • 推荐使用implements WebMvcConfigurer
    原因:继承WebMvcConfigurationSupport可能会导致其他库的Mvc配置失效,如:在自定义一个类extends WebMvcConfigurationSupport后会导致Swagger2库的资源无法访问

二、覆写addResourceHandlers方法

  • 通过相对路径访问(访问resource中的资源)的配置类
    下面的代码会将拦截所有 /static/**,并返回 SpringBoot resource目录下所对应的资源

    registry.addResourceHandler(“/static/**”)
    .addResourceLocations(“classpath:/static/”);

    完整示例:

@Configuration
public class WebConfig implements WebMvcConfigurer{
    @Autowired
    ImageConfig imageConfig;

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {

        registry.addResourceHandler("/static/**")
                .addResourceLocations("classpath:/static/");
    }
}
  • 通过绝对路径访问的配置类

    下面的代码会将拦截所有 /image/**,并返回 filePath路径所对应的资源,filePath为文件的绝对路径,如:D:\test\test.png

    registry.addResourceHandler(“/image/**”).addResourceLocations(“file:” + filePath);

    完整示例:

@Configuration
public class WebConfig implements WebMvcConfigurer{
    @Autowired
    ImageConfig imageConfig;

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //配置图片静态资源处理器
        registry.addResourceHandler("/images/**")
                .addResourceLocations("file:" + imageConfig.getSavePath());
    }
}

注意

  • 继承WebMvcConfigurationSupport可能会导致其他库的Mvc配置失效,如:在自定义一个类extends WebMvcConfigurationSupport后会导致Swagger2库的资源无法访问
  • linux 路径分隔符为 /,windows为\
  • 通过yml配置文件设置资源访问路径时,必须在路径最后加上分隔符
    错误实例:D:\classdesign-photo\images
    正确实例:D:\classdesign-photo\images\
    yml配置示例:
storage:
  image:
  	#保存路径
    save-path: D:\classdesign-photo\images\
    #允许上传的类型
    allow-type:
      - jpg
      - png

参考

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值