Spring MVC 本地目录图片文件暴露出去通常是因为没有正确配置静态资源的映射。以下是一个简单的配置示例,使用的是Spring Boot:
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// 将本地目录 "images" 下的资源映射到 "/images/**" 路径下
registry.addResourceHandler("/images/**")
.addResourceLocations("file:./images/");
}
}
在这个配置中,任何映射到 /images/ 路径的请求都会被 Spring MVC 处理,并映射到本地的 images 目录。通过这种方式,你可以防止本地的图片文件被直接访问,确保安全性。
请注意,这里使用的是Spring Boot的版本,在Spring MVC中配置静态资源可能略有不同。此外,使用 file: 前缀后需要有一个目录分隔符(在Windows上是 \,在Unix-like系统上是 /),以确保路径正确。在生产环境中,可能还需要考虑将静态资源放在外部存储中,并使用URL前缀来引用它们。