博文概览 #

你写博客最浪费时间的事是什么?
不是写字,是“插图”:
- 截个图
- 找个地方放
- 复制链接
- 粘回 Markdown
- 然后发现链接 404,再来一遍
所以我给自己整了个图床:Cloudflare R2 + 自定义域名 + VS Code 一键上传插入链接。目标很明确:复制粘贴就完事,别让我像在搬砖。
这篇文章只讲能落地的最短路径,不讲“未来也许要用的高级玩法”。你按着做完,会得到一个结果:
Cmd+V粘贴图片 -> 自动上传到 R2 -> 自动插入https://img.xxx.com/...这种链接
0. 先讲清楚:R2 是什么,图床要什么 #
R2 就是对象存储(Object Storage):你把文件丢进去,拿一个 URL 访问。它兼容 S3 API,所以很多工具能直接用。
图床要的无非三点:
- 稳定:链接别隔天就寄
- 可控:域名在你手里,别被平台一刀切
- 省心:上传别折腾
1. 创建 R2 Bucket:先有仓库再谈搬运 #
Cloudflare Dashboard -> R2 -> Create bucket。
Bucket 名字自己起,建议不要乱七八糟,比如:
blog-assetsimg
命名别含大写和奇怪符号。你未来会感谢现在的你。
2. 让图片能被访问:Public Read
#
把 bucket 设为可公开读取(public read)。这个选项在 Cloudflare 的 UI 里会变位置,但本质就是:允许匿名 GET。
3. 绑定自定义域名:图床的灵魂 #
你已经配置了自定义域名,那我把关键点说透:
- 你访问的最终 URL 要长这样:
https://img.your-domain.com/path/to/file.png - 域名必须走 HTTPS(别跟浏览器斗气)
这样做的好处:
- 链接看起来干净
- 你换存储服务也能平滑迁移(域名不变,后端变)
4. API Key:别把“钥匙”贴到墙上 #
R2 的上传需要 Access Key / Secret Key。规则就一句话:
- 密钥只放在本机,别进 Git,别写进文章,别截图。
在 Cloudflare R2 里创建 API token/密钥时,权限给最小:
- 只给对应 bucket 的读写
- 不要给全账户管理
你不是在练习“权限越大越安全”。
5. VS Code 一键上传:PicGo + S3 兼容配置 #
这块是你真正想要的:粘贴图片时自动上传,并插入 https 链接。
5.1 安装 #
- 安装 PicGo 客户端(macOS 一个 App)
- VS Code 安装扩展:
PicGo
5.2 配置 PicGo(S3 兼容 -> R2) #
R2 兼容 S3,所以你在 PicGo 里选 “Amazon S3 / S3 Compatible” 这一类存储,配置核心字段:
endpoint: https://<ACCOUNT_ID>.r2.cloudflarestorage.com
accessKeyId: <你的 R2 Access Key>
secretAccessKey: <你的 R2 Secret Key>
bucket: <你的 bucket 名>
region: auto
customDomain: https://img.your-domain.com如果 PicGo 里有 forcePathStyle,就打开;如果没有,能上传就别瞎折腾。
上传路径(可选)我建议按“站点/文章”分层,否则以后你会在桶里迷路:
uploadPath: blog/2026/01/你当然也可以更细,比如按文章 slug 分目录,但别过度设计:先把“能用”做出来。
5.3 使用方式 #
在 VS Code:
- 截图进剪贴板
- 在 Markdown 里执行 PicGo 的“从剪贴板上传/粘贴上传”命令
它会插入:
这就是你要的“能显示 + 能点击 + 能复制”。
6. Hugo 里怎么用:全部外链 #
你就用上面的 ,不用把图片放进仓库,构建也更轻。
代价也很明确:
- 图床挂了,你文章就只剩 alt 文本
7. 常见翻车点(别问我怎么知道的) #
7.1 上传成功但访问 403 #
原因只有一个:公开读取没开,或者域名绑定没指到正确的资源。
7.2 图片能访问但不显示(Content-Type 不对) #
有些上传工具会把图片当 application/octet-stream,浏览器还是能显示,但某些场景会怪。
解决方式:换工具/修正上传时的 MIME。别在这一步写“万能脚本”,你先把链路跑通再谈完美。
7.3 旧图怎么都刷不掉(缓存) #
你用的是同一个 URL 覆盖上传,CDN 缓存会让你怀疑人生。
解决方式很朴素:
- 文件名带 hash(最简单)
- 或者每次上传用新文件名
别指望“刷新一下就好了”,这不是本地文件系统。
8. 我的结论:图床不是技术活,是流程活 #
R2 本身不神奇,神奇的是你把“插图流程”变成了:
截屏 -> 粘贴 -> 自动上传 -> 自动插入链接
你写作的中断次数越少,文章质量越高。别把时间浪费在搬运图片上,把时间花在内容上。