You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot配置后访问本地目录静态图片返回404如何解决?

问题原因
  • 核心原因是Windows系统下file协议路径拼接错误:你当前代码拼接的静态资源路径格式为file:/D:\xxx\diplomna\,不符合Windows系统file协议要求的file:///盘符:/路径/格式,Spring Boot无法解析到正确的本地文件位置。
  • 次要可能原因:
    • IDE启动的工作目录配置错误,导致Paths.get("diplomna")获取到的不是项目根目录下的diplomna文件夹路径
    • Spring Security配置类未加@EnableWebSecurity或@Configuration注解,放行规则未生效
    • 本地图片实际路径与预期不符,文件不存在
解决方案

1. 修复静态资源映射代码(最优,跨平台适配)

不要手动拼接file协议路径,直接使用Path.toUri().toString()自动生成符合当前系统的协议路径,修改后的exposeDirectory方法如下:

private void exposeDirectory(String dirName, ResourceHandlerRegistry registry) {
    Path uploadDir = Paths.get(dirName);
    if (dirName.startsWith("../")) dirName = dirName.replace("../", "");
    // 改为自动生成符合系统要求的file协议路径
    registry.addResourceHandler("/" + dirName + "/**")
            .addResourceLocations(uploadDir.toUri().toString());
}

2. 验证路径正确性

在exposeDirectory方法中增加日志打印,确认映射的本地路径是否正确:

System.out.println("静态资源映射规则:/" + dirName + "/** -> " + uploadDir.toUri().toString());

启动项目后检查控制台输出,确认对应的本地路径是file:///D:/你的项目所在目录/diplomna/即可。

3. 排查IDE工作目录配置

如果使用IDEA等IDE启动项目,打开启动配置页,确认Working directory配置为当前项目的根目录,避免Paths.get("diplomna")读取到错误的路径。

4. 验证Spring Security配置

确认你的Security配置类上加了@Configuration和@EnableWebSecurity注解,保证/diplomna/**的放行规则生效。


内容的提问来源于stack exchange,提问作者agunimonx1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 13:54:01