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 小时前
boost、websocketpp、curl 编译(Windows)
后端
踏浪无痕2 小时前
信不信?一天让你从Java工程师变成Go开发者
后端·go
浪里行舟2 小时前
使用亚马逊云科技 Elemental MediaConvert 实现 HLS 标准加密
后端
峥嵘life2 小时前
Android16 EDLA 认证测试BTS过程介绍
android·java·linux
韩立学长2 小时前
Springboot考研自习室预约管理系统1wdeuxh6(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
残花月伴2 小时前
天机学堂-day5(互动问答)
java·spring boot·后端
BingoGo2 小时前
再推荐 10 个低调但非常实用的 PHP 包
后端·php
北友舰长3 小时前
基于Springboot+thymeleaf图书管理系统的设计与实现【Java毕业设计·安装调试·代码讲解】
java·spring boot·mysql·课程设计·图书管理·b/s·图书
KD6 小时前
设计模式——责任链模式实战,优雅处理Kafka消息
后端·设计模式·kafka