Spring Boot 项目中关于文件上传与访问的配置方案

Spring Boot 项目中关于文件上传与访问的配置方案

    • [1. 图⽚上传](#1. 图⽚上传)
  • [🛠️ 1. 配置项详解](#🛠️ 1. 配置项详解)
  • [🔄 2. 业务流程:一张图片是如何"活"起来的?](#🔄 2. 业务流程:一张图片是如何“活”起来的?)
  • [🌉 比喻:](#🌉 比喻:)
  • [📌 总结](#📌 总结)

1. 图⽚上传

java 复制代码
## 图⽚服务(文件上传) ##
# 目标路径
pic.local-path=D:/PIC
# spring boot3 升级配置名
spring.web.resources.static-locations=classpath:/static/,file:${pic.local-path}

这是一个典型的 Spring Boot 项目中关于文件上传与访问的配置方案。

这段配置的核心目的是:让 Spring Boot 不仅能访问项目自带的静态资源(如 JS、CSS),还能访问服务器本地磁盘上的文件(如用户上传的图片),从而实现图片服务。

🛠️ 1. 配置项详解

pic.local-path=D:/PIC

含义:这是一个自定义的配置属性。

作用:定义了一个变量 pic.local-path,其值为 D:/PIC。这代表你指定的物理存储路径。

逻辑:当用户通过接口上传图片时,后端代码(Java)会读取这个路径,将文件实实在在地保存到服务器 D 盘的 PIC 文件夹中。
spring.web.resources.static-locations=classpath:/static/,file:${pic.local-path}

含义:这是 Spring Boot 3 中用于配置静态资源访问位置的官方属性。

作用:告诉 Spring Boot 哪些目录下的文件可以直接通过 HTTP URL 访问。

拆解:
classpath:/static/:这是默认配置,指项目 resources 文件夹下的 static 目录,通常存放前端代码、图标等。
file:${pic.local-path}:这是关键。file: 前缀表示这是一个本地磁盘路径。${pic.local-path} 是占位符,会自动读取上面定义的 D:/PIC。

效果:配置完成后,Spring Boot 会将 D:/PIC 目录映射为可公开访问的静态资源目录。

🔄 2. 业务流程:一张图片是如何"活"起来的?

结合上述配置,一个完整的图片上传与展示流程如下:
上传(写入磁盘)

前端调用上传接口(如 /api/upload)。

后端接收到文件流,利用 pic.local-path 的值(D:/PIC),将文件保存到服务器的 D:\PIC\abc.jpg。
访问(映射 URL)

前端需要展示这张图片,它需要拼接一个 URL。

URL 规则:http://服务器地址:端口/文件在目录中的相对路径

示例:如果后端返回给前端的文件名是 abc.jpg,前端在 中填入:

http://localhost:8080/abc.jpg

Spring Boot 内部处理:

收到请求 /abc.jpg。 根据 static-locations 配置,先查 classpath:/static/(没找到)。 再查 file:D:/PIC/。

在 D:/PIC/ 目录下找到了 abc.jpg,将其作为流返回给前端。

🌉 比喻:

快递驿站(映射关系)

你可以把 Spring Boot 项目想象成一个快递驿站(服务器)。

自带仓库(classpath:/static/):

驿站自己有一个小仓库,里面放着官方发来的杂志、海报。大家都知道去这里拿。

私人储物间(D:/PIC):

你(开发者)在驿站旁边自己租了一个大仓库(D盘的PIC文件夹),用来存你自己的包裹(用户上传的图片)。

关键配置(static-locations):

以前驿站的快递员(Spring Boot 框架)只认自己的仓库,不认你的私人储物间。

这行配置的作用就是: 告诉驿站的所有快递员:"以后有人来找包裹,除了查自己的仓库,顺便也去旁边的私人储物间(D:/PIC)里查一下。"

结果:以前别人拿不到你储物间里的包裹,现在只要报出包裹名(URL路径),快递员就能去你的储物间找到它并交给对方。

📌 总结

这行代码的本质功能:

声明:告诉 Spring Boot,"兄弟,除了你自己管的地方,D盘PIC文件夹也是咱们的地盘"。

放行:当浏览器请求一个图片(比如 1.jpg)时,Spring Boot 会去 D:/PIC 里把这个文件找出来,通过网络发给浏览器。

如果没有这行配置:文件虽然存到了 D 盘,但 Spring Boot 装作看不见,浏览器访问时会返回 404 Not Found。

相关推荐
二哈赛车手5 小时前
新人笔记---ApiFox的一些常见使用出错
java·笔记·spring
栗子~~6 小时前
JAVA - 二层缓存设计(本地缓冲+redis缓冲+广播所有本地缓冲失效) demo
java·redis·缓存
YDS8296 小时前
DeepSeek RAG&MCP + Agent智能体项目 —— RAG知识库的搭建和接口实现
java·ai·springboot·agent·rag·deepseek
candyTong7 小时前
Claude Code 的 Edit 工具是怎么工作的
javascript·后端·架构
未若君雅裁8 小时前
MyBatis 一级缓存、二级缓存与清理机制
java·缓存·mybatis
AI人工智能+电脑小能手8 小时前
【大白话说Java面试题 第65题】【JVM篇】第25题:谈谈对 OOM 的认识
java·开发语言·jvm
GetcharZp8 小时前
GitHub 2.4 万 Star!D2 正在重新定义程序员画图方式
后端
阿维的博客日记9 小时前
Nacos 为什么能让配置动态生效?(涉及 @RefreshScope 注解)
java·spring
雨辰AI9 小时前
SpringBoot3 + 人大金仓读写分离 + 分库分表 + 集群高可用 全栈实战
java·数据库·mysql·政务
辰海Coding10 小时前
MiniSpring框架学习-完成的 IoC 容器
java·spring boot·学习·架构