Skip to content
pollybird edited this page Sep 7, 2026 · 1 revision

对象存储 OSS

对象存储 OSS

官方内置插件 oss_storage,支持阿里云 OSS / 腾讯云 COS / 七牛云 Kodo。默认本地存储、零行为变化:升级后自动启用但不配置凭证不产生任何云端调用。

架构

  • 核心抽象层 app/utils/storage.py:定义 StorageDriver 协议与本地驱动;上传入口 save_upload_file() 先在本地完成校验/压缩,再发布到当前驱动。
  • 云驱动在插件中:SDK 可选依赖、运行时懒加载,未安装时配置页给出 pip install 指引。
  • 文件归属:uploaded_files.storage 列标记文件存于哪个驱动;切换驱动后历史 URL 不受影响。
  • 禁用回退:禁用插件时自动把存储驱动重置为本地。

配置步骤

  1. 安装对应 SDK:pip install oss2 / cos-python-sdk-v5 / qiniu
  2. 云厂商控制台创建 Bucket,使用 RAM 子账号(仅授予目标 Bucket 读写权限)
  3. 后台 系统设置 → 对象存储 填写凭证并连接测试

一键迁移

配置页提供 dry-run 预览(待传文件数、内容引用链接数)与一键执行:

  • 逐文件上传,云端已存在自动跳过(可中断、可重入)
  • 上传成功后批量改写内容中的本地链接为云域名
  • 本地原文件保留不删;uploads/demo/ 不迁移

安全设计

  • 云端上传失败显式报错,不静默回退本地
  • 备份恢复文件强制存本地(storage_scope='local')
  • 凭证存数据库 settings 表,不写入仓库文件
  • 七牛云必须绑定自有 CDN 域名(默认下载域名 30 天过期)

Clone this wiki locally