feat(file): 文件存储接入 RustFS(S3),修正文件外链域名与路径
文件上传从本地磁盘改为可切换的对象存储(默认 s3,type 改回 local 即退回原行为): - 新增 common.core.storage 包:ObjectStorage 接口 + S3ObjectStorage(minio 8.5.17) + NoopObjectStorage + FileStorageService + StorageConfig + StoredFile; key 规则沿用 file/yyyyMMdd/uuid.ext、缩略图 file/thumbnail/...,桶内结构对齐旧磁盘目录 - 读取仍走后端代理 GET /api/file/**:s3 模式下首次读取物化到本地 cache-path 再返回, 对外 URL 不变;历史本地文件一律作废,不做回退兼容 - ConfigProperties 增加 storage 配置块,endpoint/access-key/secret-key 支持环境变量覆盖 (RUSTFS_ENDPOINT / RUSTFS_ACCESS_KEY / RUSTFS_SECRET_KEY),配置非法时启动即失败 - FileRecordService.deleteFileAsync 改为按 path 删除,本地与对象存储同时清理 - pom 固定 okhttp3.version=4.12.0、kotlin.version=1.9.25:Spring Boot 2.5.4 默认的 okhttp 3.14.9 与 minio 所需的 okhttp 4.12.0 冲突,会导致启动即 NoClassDefFoundError: okhttp3/ConnectionPool 同时修正文件外链拼接(以下均为改造前就存在的问题): - application-prod.yml:server-url / file-server 由失效的 tuanwei-api.gxwebsoft.com 改为生产实际域名 https://twai-api.gxmu.edu.cn(与 admin .env.production、 uniapp request.js 一致),此前上传返回的 url 指向旧域名导致访问不到 - FileController 抽出 fileBaseUrl(),分页/列表原来漏了 /api/file 前缀 - OpenFileController 同样补 /api/open/file 前缀 - TzbcyMaterialServiceImpl 下载链接补 /api/file/download
This commit is contained in:
@@ -21,6 +21,11 @@
|
||||
<java.version>1.8</java.version>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<!-- Spring Boot 2.5.4 默认把 okhttp 钉在 3.14.9,而 minio 8.5.x 需要 4.x,
|
||||
否则启动时 io.minio.S3Base 会报 RequestBody.create 方法不存在。
|
||||
okhttp 4.x 依赖 kotlin-stdlib,故一并覆盖 Spring Boot 管理的 kotlin 版本。 -->
|
||||
<okhttp3.version>4.12.0</okhttp3.version>
|
||||
<kotlin.version>1.9.25</kotlin.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
@@ -174,6 +179,13 @@
|
||||
<version>2.1.0</version>
|
||||
</dependency>
|
||||
|
||||
<!-- minio sdk, 兼容 S3 协议对象存储(RustFS/MinIO) -->
|
||||
<dependency>
|
||||
<groupId>io.minio</groupId>
|
||||
<artifactId>minio</artifactId>
|
||||
<version>8.5.17</version>
|
||||
</dependency>
|
||||
|
||||
<!-- spring-boot-mail -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
|
||||
Reference in New Issue
Block a user