Spring引导提供来自文件夹外部的静态映像



我得到了这个项目结构:

  • api

    src/main/java
    -some classes
    reports /
    -screenshots
    - imageOne.png
    

我想像这样为imageOne.png提供服务localhost:8080/imageOne.png

我得到了这个配置

@Configuration
public class Configurer implements WebMvcConfigurer {
private static final Logger LOG = LoggerFactory.getLogger(Configurer.class);
private final String RESOURCE_LOCATION = "file:/api/reports/screenshots";
private final String ANT_PATH_EXPRESSION="/**";
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {

registry
.addResourceHandler(ANT_PATH_EXPRESSION)
.addResourceLocations(RESOURCE_LOCATION);

}
/**
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {

return builder.sources(ApiRestApplication.class);
}
*/
@Override
public void addCorsMappings(CorsRegistry registry) {

registry.addMapping("/**");

}

但不起作用,每次我执行localhost:8080/imageOne.png时都会返回:

There was an unexpected error (type=Not Found, status=404).

我需要帮助来查找代码中的错误

能够通过使用${basedir}/reports/screenshots将文件夹添加到maven中的构建路径来解决这个问题,使其相对而不是静态。我使用不同的操作系统对其进行了测试。这是";代码";

<build>
<finalName>somename</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
<resource>
<directory>${basedir}/reports</directory>
</resource>
</resources>

并将其添加到application.properties

spring.resources.static-locations=classpath:/ 

这是自定义配置

//private final String RESOURCE_LOCATION = "classpath:/";
private final String ANT_PATH_EXPRESSION="reports/**";
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {

registry 
.addResourceHandler(ANT_PATH_EXPRESSION)  ;
//.addResourceLocations(RESOURCE_LOCATION);

}

最新更新