ContiNew
系统管理

存储管理

本地存储与对象存储的配置管理、默认存储切换与分片上传参数。

本文是 4.x 的归档文档(冻结于 v4.2.0)。该分支只接收勘误修正, 内容基本不再变动;文中的源码路径、配置项与版本号均以 4.2.x 为准,不建议用于新项目。

新项目请查看 5.x 最新文档。已在 4.2.x 上运行的项目,本文仍是可靠依据。

存储管理维护文件落盘的目标平台,功能入口在「系统管理 -> 存储管理」(前端位于系统配置的存储页签),后端接口前缀为 /system/storage,对应 StorageController。存储配置存储在 sys_storage 表,运行时由 StorageServiceImpl.load 注册为 X File Storage 的动态存储平台,保存即生效,不需要重启。

存储类型

存储类型由 StorageTypeEnum 定义。

类型值必填配置
本地存储1Bucket(存储路径,自动补尾部 /)、访问路径(domain,需为 http/https URL)
对象存储2Access Key、Secret Key、Endpoint、Bucket、域名

两类配置的必填项不同,由 StorageTypeEnum.validate 按分组校验(ValidationGroup.Storage.Local / ValidationGroup.Storage.OSS)。域名保存时自动补尾部 /,因为 X File Storage 拼接路径时直接做字符串相加,每一级路径都要求以 / 结尾。

存储字段

sys_storage 表的主要字段如下。

字段说明
name / code名称与编码,编码唯一,作为 X File Storage 的 platform
type类型(1:本地存储;2:对象存储)
access_key / secret_key / endpoint对象存储的凭据与接入点
bucket_name本地存储路径或对象存储 Bucket
domain访问域名,拼文件 URL 用
multipart_upload_threshold分片上传阈值(字节),超过该大小走分片
multipart_upload_part_size分片大小(字节),对象存储不能小于 5MB
multipart_temp_dir本地分片临时目录,仅本地存储使用
recycle_bin_enabled / recycle_bin_path回收站开关与路径
is_default是否默认存储
status状态(1:启用;2:禁用)

默认存储与动态加载

存储记录保存后,StorageServiceImpl.load 按类型构造 LocalStorageConfig 或 OssStorageConfig,调用 X File Storage 的 fileStorageService.register 注册平台;编码已存在且为动态平台时先卸载再注册,实现热更新。标记为默认的存储经 fileStorageService.defaultStorage(code) 生效,未指定存储编码的上传全部落到默认存储。

切换默认存储有两个入口。页面上「设为默认」按钮调 PUT /system/storage/{id}/default(权限码 system:storage:setDefault);启停存储调 PUT /system/storage/{id}/status(权限码 system:storage:updateStatus)。

上传时前端先调 GET /system/file/upload/config/default 拿默认存储的生效配置(阈值、分片大小、临时目录),据此决定直接上传还是走分片。阈值、分片大小未在存储记录中配置时,回退到 X File Storage 的全局默认值(10MB 阈值、5MB 分片,见 StorageConstant)。

与文件管理的关系

sys_file.storage_id 记录每个文件所属的存储,删除存储前需要确认其下没有文件。回收站路径配置在该存储上,文件删除时移动到对应路径,详见文件管理。

对象存储兼容 S3 协议(OssStorageStrategy 强制开启 path-style access),主流厂商(阿里云 OSS、腾讯云 COS、MinIO 等)均可接入,厂商差异通过 Endpoint 与域名配置消化。

相关源码

目录