Dropline下载

Cloudflare R2

引擎: S3 兼容(AWS SigV4) · 预设: Cloudflare R2

R2 是没有出站费用的 S3 API。对一个产出公开链接的上传工具来说,这几乎是天生的归宿。

配置

设置 → 图床 → + → Cloudflare R2。

字段 值
Endpoint https://<ACCOUNT_ID>.r2.cloudflarestorage.com
Region auto
Bucket 只填桶名,例如 assets
Access Key ID 来自 R2 API token
Secret Access Key 同一个 token 给出的密钥 —— 存进钥匙串
公开访问前缀 你的 r2.dev 或自定义域名 —— 见下
对象键模板 images/{{date}}/{{uuid}}.{{ext}}

有两个地方最容易踩坑,都跟 endpoint 有关:

  • 它是账号的 origin,不是桶的地址。 不要把桶名接在后面 —— 桶有自己的字段,Dropline 会自己拼成 endpoint/bucket/key。
  • <ACCOUNT_ID> 是一串十六进制,不是你的邮箱或域名。在 Cloudflare 面板的 R2 → 概览里,右侧 S3 API 那个框里能看到,任何 R2 页面的 URL 里也有。

region 永远是 auto。R2 没有 AWS 意义上的 region,只要配置和请求一致,它就接受这个签名。

创建桶和 token

  1. Cloudflare 面板 → R2 → 创建存储桶。起个名字,位置提示可选。
  2. R2 → API → 管理 API 令牌 → 创建 API 令牌。
  3. 权限选 Object Read & Write,范围选应用到特定存储桶,只勾这一个。
  4. 创建。复制 Access Key ID 和 Secret Access Key —— 密钥只显示一次。

R2 的 token 无法按 key 前缀收窄,只能按桶。想要隔离就一个用途一个桶。

让桶可公开访问

R2 的桶默认是私有的,也没有类似桶策略的东西。两个选择:

托管的 r2.dev 子域 —— 最快,有速率限制,个人用够了。桶 → 设置 → 公开访问 → R2.dev 子域 → 允许访问,你会拿到:

text
https://pub-<hash>.r2.dev

自定义域名 —— 正经场景该用这个。桶 → 设置 → 自定义域 → 连接域,域名需要在同一个 Cloudflare 账号下的 zone 里。之后流量由 Cloudflare 的 CDN 提供和缓存,没有速率限制:

text
https://cdn.example.com

无论哪种,把那个 origin 填进公开访问前缀。不填的话,Dropline 返回的是 …r2.cloudflarestorage.com/bucket/key,那是 API 端点,需要签名,浏览器里打不开。

你拿到的链接

text
https://cdn.example.com/images/2026/08/19/a1f3….png

验证

点测试上传,然后打开链接。如果上传成功但链接返回 401 或 404,说明公开访问没开,或者前缀还填着 API 端点。

常见问题

现象 原因
SignatureDoesNotMatch endpoint 后面接了桶名,或者带了尾斜杠
上传时 HTTP 401 token 没有 Object Read & Write,或者范围限定到了别的桶
链接要求签名 公开访问前缀还是 r2.cloudflarestorage.com 那个端点
链接 404 桶还没开公开访问

关于费用

R2 按存储量和操作次数计费,但不收出站流量费。对一个专门产出「别人会去加载的链接」的工具来说,这通常就是几分钱和一笔真账单的区别。

本页目录