如何在Spring Boot 2.0 Web应用程序中指定图像存储的外部位置?

ace*_*ace 8 spring image spring-boot

目前我的图像存储在项目目录的/ src/main/resources/static/myimages中.现在我想将这些项目目录移到/ Users/tom/myimages之外,这样在HTML标记中的img标签src ="/ myimages/subdir/first.jpg"将从/ Users/tom/myimages /加载子目录/ first.jpg.如何在spring boot 2.0项目中实现这一目标?

这将允许我添加新图像,而无需在生产环境中重新编译项目.

Sh.*_*vel 5

也许您应该尝试定义自己的静态资源处理程序?

它将覆盖默认值。

像这样的东西:

@Configuration
public class StaticResourceConfiguration extends WebMvcConfigurerAdapter {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("file:/path/to/my/folder/");
    }
}
Run Code Online (Sandbox Code Playgroud)

更新 这似乎是我的一些旧项目的工作:

@Configuration
@AutoConfigureAfter(DispatcherServletAutoConfiguration.class)
public class CustomWebMvcAutoConfig extends
                    WebMvcAutoConfiguration.WebMvcAutoConfigurationAdapter {

  @Override
  public void addResourceHandlers(ResourceHandlerRegistry registry) {
    String myExternalFilePath = "file:///C:/Users/tom/imgs/";

    registry.addResourceHandler("/imgs/**").addResourceLocations(myExternalFilePath);

    super.addResourceHandlers(registry);
  }

}
Run Code Online (Sandbox Code Playgroud)


Moh*_*and 5

您可以实现这一点,PathResourceResolver它是最简单的解析器,其目的是在给定公共 URL 模式的情况下查找资源。事实上,这是默认的解析。

代码:

@Configuration
@EnableWebMvc
public class MvcConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
       registry
               .addResourceHandler("/myimages/**")
               .addResourceLocations("/Users/tom/myimages")
               .setCachePeriod(3600)
               .resourceChain(true)
               .addResolver(new PathResourceResolver());
    }
} 
Run Code Online (Sandbox Code Playgroud)

描述:

  • 我们PathResourceResolver将资源链中的 注册为其中的唯一ResourceResolver
  • 与 结合使用的 html 代码PathResourceResolver/first.jpg文件/Users/tom/myimages夹中定位文件