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。

相关推荐
咩图2 分钟前
Sketchup软件二次开发+Ruby+VisualStudioCode
java·前端·ruby
moxiaoran57533 分钟前
Go语言的文件操作
开发语言·后端·golang
我命由我123456 分钟前
Android 开发问题:Duplicate class android.support.v4.app.INotificationSideChannel...
android·java·开发语言·java-ee·android studio·android-studio·android runtime
熬夜敲代码的小N11 分钟前
Unity大场景卡顿“急救包”:从诊断到落地的全栈优化方案
java·unity·游戏引擎
坚持学习前端日记12 分钟前
容器化中间件的优缺点
java·中间件
黑客老李13 分钟前
一次有趣的通杀
java·数据库·mysql
季明洵18 分钟前
反转字符串、反转字符串II、反转字符串中的单词
java·数据结构·算法·leetcode·字符串
赴前尘19 分钟前
记一次golang进程执行卡住的问题排查
开发语言·后端·golang
虫小宝24 分钟前
查券返利机器人的异步任务调度:Java XXL-Job+Redis实现海量查券请求的分布式任务分发
java·redis·分布式
码农小卡拉33 分钟前
Prometheus 监控 SpringBoot 应用完整教程
spring boot·后端·grafana·prometheus