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。

相关推荐
一 乐6 小时前
婚纱摄影网站|基于ssm + vue婚纱摄影网站系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·后端
Boilermaker19926 小时前
[Java 并发编程] Synchronized 锁升级
java·开发语言
Cherry的跨界思维6 小时前
28、AI测试环境搭建与全栈工具实战:从本地到云平台的完整指南
java·人工智能·vue3·ai测试·ai全栈·测试全栈·ai测试全栈
alonewolf_997 小时前
JDK17新特性全面解析:从语法革新到模块化革命
java·开发语言·jvm·jdk
一嘴一个橘子7 小时前
spring-aop 的 基础使用(啥是增强类、切点、切面)- 2
java
码事漫谈7 小时前
Protocol Buffers 编码原理深度解析
后端
sheji34167 小时前
【开题答辩全过程】以 中医药文化科普系统为例,包含答辩的问题和答案
java
码事漫谈7 小时前
gRPC源码剖析:高性能RPC的实现原理与工程实践
后端
恋爱绝缘体17 小时前
2020重学C++重构你的C++知识体系
java·开发语言·c++·算法·junit
wszy18098 小时前
新文章标签:让用户一眼发现最新内容
java·python·harmonyos