利用Cloudflare R2免费存储你的网页图片,并实现一键上传

Cloudflare R2 是类似 AWS S3 的对象存储服务,对于免费账户提供 10G 的空间以及每月 100 万次的 A 类操作和 1000 万次 B 类操作,具体什么是 A 类操作什么是 B 类操作,可以参考官方说明:A 类操作。对于个人博客来说,这是个不错的免费图床。本文详细介绍如何将 Cloudflare R2 服务作为个人网站的免费图床,并且无缝集成 VSCode Markdown 编辑器。

注册 Cloudflare 账户并开通 R2 服务

  1. 注册 Cloudflare 账号非常简单
  • 前往 Cloudflare 注册页面
  • 用你的邮箱地址作为登录用户名,并输入密码;
  • 点击 Create Account, 一封电子邮件会发往你注册的邮箱,点击里面的确认链接即可激活账号。
  1. 开通 R2 服务

登录 Cloudflare,从左侧菜单栏进入 R2 页面,按照页面提示开通 R2 服务。

开通 R2 服务需要提供信用卡信息,支持 VISA 的即可,超过免费使用额度的时候会从该卡扣费,对于访问量不大的个人博客,免费额度一般足够了。

  1. 创建bucket

接下来我们点击Create Bucket蓝色按钮,创建一个名为static的“桶”(bucket)。

点击Settings选项卡,进入配置页面,点击 Allow Access,允许其中的图片被互联网访问到,效果如下图所示

Cloudflare R2允许互联网访问

同时保存下图中的S3 API,后面步骤需要用到。

S3 API

  1. 创建 API Token

如果你并不想自动上传,而是手动上传图片,目前设置都已经完成了。

后续步骤我们会介绍如何通过 VSCode 的插件自动上传图片到到 Cloudflare R2 的时候会需要用到这个 API Token。

回到 R2 的首页,然后右侧的 Manage R2 API Tokens 链接,点击 Create API token 进入配置页面。

  • Token name: 给 Token 一个名字,可以任意字符;
  • Permissions: 由于我们需要通过这个 Token 上传图片,所以这里需要选择 Object Read & Write;
  • Specify bucket(s): 根据需要可以选择该 Token 可以访问的 Bucket,是所有的都可以,还是只能是选定的;
  • TTL: 该 Token 的有效期;
  • Client IP Address Filtering:类似配置白名单、黑名单的方式来限制使用这个 Token 的 IP 地址,可以根据实际需要配置,简单期间可以留空。

最后点击 Create API Token 完成创建。

注意:务必保管好Token valueAccess Key IDSecret Access Key, 因为之后你没法再查看这些值。

安装 VSCode 插件并完成配置

接下来我们介绍通过 VSCode 的插件来实现在 Markdown 或 HTML 文档中一键插入图片并自动上传至前面配置的 Cloudflare R2 中。

在 VSCode 插件管理 Tab 页,搜索并安装插件 Markdown Image,安装完成后点击边上的齿轮按钮进入配置页。

VSCode插件配置

该插件的配置项非常多,但是我们只需要关心部分即可。首先是 Base 组:

  • Code Type: 因为我们是 Markdown ,所以这里选择 Markdown;如果你是直接编辑 HTML, 则需要选择HTML;
  • Upload Method: 这里必须选择 S3,Cloudflare R2 是 S3 兼容的服务;

然后是S3组:

  • Access Key ID: 填入上面步骤中的 Access Key ID;
  • Bucket Name: Bucket的名字,比如我们的例子中是 static;
  • Endpoint: 填入上面步骤中保存的 S3 API;
  • Region: 如果你不清楚具体哪个区域的,这里填 auto;
  • Secret Access Key: 填入上面步骤中的 Secret Access Key;

到了检验成果的时候了,复制一个图片,创建一个 Markdown 文件,按下快捷键 Alt + Shift + V,稍等会(后台在上传图片中),这就大功告成了,NICE~

总结

Cloudflare R2 不仅仅可以存放图片,理论上可以存放任何文件。如果你的域名也是在 Cloudflare 管理,可以给你的 Bucket 配置个子域名,这样 Cloudflare 的缓存机制也会自动生效,可以有效降低 R2 的操作次数,这就意味着一直免费咯。还有我们这个 VSCode 的插件其实还支持很多其他的平台,比如Qiniu。