PicGo配置CloudflareR2
本站一直使用Typora+PicGo组合来处理markdown和图片的,以往都是用的是阿里云OSS,但最近看到不少受害者一觉醒来被刷掉几千块,为了避免遭受此问题,我还是将所有站点的静态资源从阿里云OSS迁移到CloudFlare R2。本次记录一下PicGo的配置过程。
下载插件
PicGo默认不支持CloudFlare R2,但有插件系统,可以通过别人开发的插件来实现。由于CloudFlare R2兼容S3,所以我们只需要下载S3插件即可。在插件列表中搜索S3:

插件版本不同配置也会稍微有些差异。本次PigGo版本为2.4.1、插件版本为s3 1.5.1。
新建CloudFlare R2桶
打开CloudFlare的R2,点击创建存储桶

填写桶名称即可,其他默认。创建好以后,点击刚才新建的桶->设置。自定义域,绑定自己的域名。如果域名在CloudFlare,这一切都是自动的,点点就完事。
创建API Tokens
在桶列表的右侧,Account Details中,点击Manage标签,打开令牌页面。点击创建User Api令牌

创建成功后会出现如下页面。
请注意别关页面,这玩意只显示一次,安全起见也没必要保存,页面停留着即可。

配置PicGo的S3
打开图床配置界面,新增一个配置,或者修改默认配置。

图床配置名
就是给你的图床起个别名,方便自己选中,例如我的名称就是CloudFlare R2
应用密钥
这里填写刚才创建API页面中的访问密钥ID
应用密钥
填写刚才创建API页面中的机密访问密钥
桶名
填写刚才创建的桶名称
上传文件路径
这里按你需要填写。假设你的自定义域名是https://img.abc.com,你想要在桶中创建一个images/tech(因为我有多个子站点,用于区分)目录,并且将图片以年/月/文件名.后缀保存,那么那就填写images/tech/{year}/{month}/{fullName},具体占位符规则如下:
| payload | 描述 |
|---|---|
| {year} | 当前日期-年 |
| {month} | 当前日期-月 |
| {day} | 当前日期-日 |
| {hour} | 当然日期-时 |
| {minute} | 当前日期-分 |
| {second} | 当前日期-秒 |
| {millisecond} | 当前日期-毫秒 |
| {timestamp} | Unix时间戳 |
| {timestampMS} | Unix时间戳(毫秒) |
| {fullName} | 完整的文件名(包含后缀) |
| {fileName} | 文件名(不包含后缀) |
| {extName} | 扩展名(不含.) |
| {md5} | 图片MD5计算值 |
| {sha1} | 图片SHA1计算值 |
| {sha256} | 图片SHA256计算值 |
地区
刚才创建的时候给的是亚太的确,如果你不知道是哪个地区填auto即可。
自定义节点
填写刚才创建的API中的为 S3 客户端使用管辖权地特定的终结点的地址,以r2.cloudflarestorage.com结尾的那个。
代理
可以空着,如果你本地网络无法访问R2,可以填写你得shadowsockets地址。目前R2还未被封禁(拜托各位邻居轻点蹬)。
拒绝无效TLS证书连接
选项切换到yes即可。
ACL访问控制列表
填写public-read即可。
ForcePathStyle
建议开启,因为我们要使用自定义域名去访问图片。
自定义输出URL模板
空着就行
设置输出图片URL前缀
填写绑定到桶上的自定义域名,例如https://img.abc.com
设置输出图片URL后缀
这个一般是处理图片样式、动态裁剪图片的。虽然CloudFlare也支持images来处理图片样式,但是我并没有开启,相对R2,它还是略微贵一点,原本就是为了怕被刷导致破费才换到R2的,没必要开启这个。
Bucket前缀
建议开启。因为我想要的路径是https://img.abc.com/images/tech/2026/01/xxx.webp这种格式,如果不开启,它会自带一个层桶的目录,变成了https://img.abc.com/桶名称/images/tech/2026/01/xxx.webp。
总结
有些配置项还是有些歧义,但多试试就可以了。后续写个脚本,批量将阿里云的文件全部迁移到CloudFlare R2。






