Skip to content

对象存储 ​

管理后台 → 设置 → 「存储后端」区块,支持三种后端,切换保存后新上传的文件写入新后端,旧文件仍从原后端读取(需保留对应绑定)。

后端说明
r2Cloudflare R2 Worker binding,默认,零配置
s3任意 S3 兼容存储(AWS S3 / B2 / OSS / COS / MinIO 等)
webdav远程 WebDAV 网盘(坚果云等)

R2(默认) ​

只需在 wrangler.jsonc 中保留 R2 绑定,无需任何后台配置:

jsonc
"r2_buckets": [
  { "binding": "r2", "bucket_name": "cloud-r2pan" }
]

S3 兼容存储 ​

配置项 ​

字段示例说明
存储后端s3切换到 S3 模式
Endpointhttps://s3.amazonaws.comS3 服务地址
Regionus-east-1存储区域
Bucketmy-files存储桶名称
Access Key IDAKIA...访问密钥 ID(明文存)
Secret Access KeywJalr...访问密钥(AES-GCM 加密存)
Addressing Stylepath / virtualBucket 在 URL 中的位置,大多数用 path

内置完整的 AWS Signature V4 签名(零 npm 依赖),覆盖 PutObject / GetObject(支持 Range 断点续传)/ DeleteObject / HeadObject。

测试连接 ​

填完配置后点击 测试连接,程序会执行一次「写入临时文件 → 读回校验 → 删除」的完整往返:

POST /api/admin/storage/test
成功返回:{ ok: true, head_ok: true, head_size: 36 }

常见服务商参考 ​

服务商EndpointRegion 示例Style备注
AWS S3https://s3.amazonaws.comus-east-1均可$0.023/GB 存储 + $0.09/GB 出口
Backblaze B2https://s3.us-west-002.backblazeb2.comus-west-002path$0.006/GB 存储 + $0.01/GB 出口
Cloudflare R2https://{account-id}.r2.cloudflarestorage.comautopath出口费 $0
阿里云 OSShttps://oss-cn-hangzhou.aliyuncs.comcn-hangzhouvirtual国内访问快
腾讯云 COShttps://cos.ap-guangzhou.myqcloud.comap-guangzhouvirtual国内访问快
七牛云 Kodohttps://s3-cn.qiniu.comcn-z0virtual性价比高
MinIO(自建)http://your-server:9000任意path内网需 Cloudflare Tunnel
DigitalOcean Spaceshttps://nyc3.digitaloceanspaces.comnyc3path带 CDN
Wasabihttps://s3.us-west-1.wasabisys.comus-west-1path无免费额度但便宜

跨网段访问

Cloudflare Workers 从公网出口发起请求,访问内网 MinIO 等需要通过 Cloudflare Tunnel 暴露到公网。

远程 WebDAV 挂载(存储后端) ​

把支持 WebDAV 的网盘当作存储空间:

字段示例说明
WebDAV URLhttps://dav.jianguoyun.com/dav/服务器地址
用户名xxx@example.com认证用户名
密码********应用密码(AES-GCM 加密存)

对外 WebDAV 服务(挂载点) ​

独立于存储后端的功能:开启后本站文件可通过 WebDAV 协议被外部挂载(如挂载到 Windows 资源管理器、rclone)。

设置项默认值说明
启用 WebDAV 服务关闭挂载点为 /webdav/
用户名webdavBasic Auth 用户名
密码未设置必须设置后才能连接
根目录/限制可访问的目录范围,如 /shared

切换到 S3 的完整流程 ​

  1. 先用默认 R2 模式部署一次,让 D1 自动建表
  2. 登录 /admin → 文件 Tab,上传一个测试文件验证 Worker 正常
  3. 设置 Tab → 「存储后端」选 s3,填写 Endpoint / Region / Bucket / AK / SK
  4. 保存 → 测试连接,确认连通
  5. 之后上传写入 S3,下载也从 S3 读取

数据迁移 ​

项目不提供一键迁移脚本,可用以下任一方式把 R2 数据搬到 S3:

bash
# rclone
rclone copy cloudflare-r2:bucket/path s3-alias:bucket/path

# awscli(需先把 R2 配置为 S3 endpoint)
aws s3 cp --recursive s3://r2-bucket/files/ s3://new-s3-bucket/files/

或在 Cloudflare 控制台:R2 → Migration Tool → 选择目标 S3 存储桶。

移除 R2 绑定前

如果完全移除 r2_buckets 绑定,旧文件记录仍在 D1 中但 R2 里已无对象,下载会报 404。可执行 /api/admin/shares/cleanup 清理孤儿记录。