您的YAML配置存在几个问题,导致静态资源无法正确访问。以下是修正后的方案和常见问题分析:
修正后的配置建议(application.yml)
file:
upload-dir: ./uploads/ # 文件上传目录(相对路径)
spring:
mvc:
static-path-pattern: /images/** # URL访问前缀
web:
resources:
static-locations: "file:${file.upload-dir}, classpath:/static/"
关键修复点说明:
路径格式问题:
./uploads/
是相对路径(项目根目录下)- 建议测试时改用绝对路径(如:
file:/tmp/uploads/
)确保权限无误
多目录支持:
- 添加了
classpath:/static/
保留默认静态资源目录 - 多个路径用逗号分隔
- 添加了
必须创建的目录:
mkdir -p ./uploads/
chmod 755 ./uploads/
验证步骤:
检查目录结构:
your-project/
├── uploads/ # ← 确保此目录存在
│ └── test.jpg # ← 测试文件
└── src/main/resources/
└── static/ # ← Spring Boot默认静态资源目录
└── demo.png
访问测试:
http://localhost:8080/images/test.jpg
(来自上传目录)http://localhost:8080/images/demo.png
(来自classpath)
常见问题排查:
403 Forbidden错误 → 检查操作系统文件权限
404 Not Found错误 →
- 确认文件实际存在且路径拼写正确
Windows系统注意:
file.upload-dir: C:\\temp\\uploads\\
# Windows路径需要双反斜杠或正斜杠:"file:C:/temp/uploads/"
如果需要进一步调试,可以在启动时添加以下参数查看资源映射情况:
properties
logging.level.org.springframework.web=DEBUG
内容由零声教学AI助手提供,问题来源于学员提问