Java通过请求路径访问项目外的文件(本地图片等)

120 阅读1分钟

SpringBoot项目配置url请求路径映射本地文件路径

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Value("${kxapp.data-path}")
    String dataPath;

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        String s= Paths.get(dataPath).resolve("public-resource").toUri().toString();
        registry.addResourceHandler("/public-resource/**").addResourceLocations(s);
    }
}

${kxapp.data-path}引用application.properties文件中配置的kxapp.data-path变量
application.properties文件该变量配置如下:

kxapp.data-path=F:\\kxapp_book\\tkxapp\\data

String s = Paths.get(dataPath).resolve("public-resource").toUri().toString()
得到的字符串s为: F:\kxapp_book\tkxapp\data\public-resource

关键代码:

registry.addResourceHandler("/public-resource/**").addResourceLocations(s);

addResourceHandler表示url路径中以/public-resource开头,会将public-resource解析为
addResourceLocations(s)中s表示的路径

比如url请求为:http://localhost:8080/publicresource/20220722/da7130c1570c4c79a92e6ac08d82dbb5.jpg 会被配置的资源处理器解析成http://localhost:8080/F:/kxapp_book/tkxapp/data/20220722/da7130c1570c4c79a92e6ac08d82dbb5.jpg publicresource被替换成了F:/kxapp_book/tkxapp/data

觉得有用的可以点赞收藏,谢谢!