我得到了这个项目结构:
-
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);
}