【白嫖 Cloudflare】之免费图床搭建:PicGo + Cloudflare R2,手把手教

前段时间,和大家分享过一个免费图床方案
从0搭建你的免费图床(PicGo + Oracle cloud 甲骨文云对象存储)

后来发现,Oracle cloud 对象存储在国内访问速度受限,存在部分图片无法加载的问题!

今天,继续分享一个平替方案:PicGo + Cloudflare R2

最近一直在摸索 Cloudflare 家的产品,而 Cloudflare R2 正是它推出的对象存储服务,10G 免费额度。

本文将手把手带你用 Cloudflare R2 搭建免费图床,供小伙伴们尽情白嫖。

1. Cloudflare R2 简介

R2 是 Cloudflare 在对象存储部分的又一项免费服务,

注册登录后,点击左侧边栏的 R2 访问服务。

进来后,可以看到免费额度。相比 Oracle cloud 的对象存储:

  • 存储空间:Oracle cloud 有 20 G,Cloudflare 只有 10 G;
  • API 调用:Oracle cloud 每月限制 5 万次,Cloudflare 100 万次

大家可根据自己需求进行选择,不过我的建议:全都要!

上图中的 A 类代表上传等操作,B 类代表下载、访问等操作。

和免费 DNS 服务不同的是,开通 R2 服务需要绑定一张信用卡,一来为了验证用户身份,二来怕你用超了,跑路~

免费额度内使用,不用担心扣费。

2. 创建存储桶

信用卡绑定成功后,左侧才会出现创建存储桶的选项。

如果数据一般都是在国内访问的话,可以把桶放在亚太地区。下方点击「创建存储桶」。

桶创建成功后,可以直接从本地拖拽上传,至此,你完全可以把它当成一个网盘使用!

3. 获取公网访问地址

如何获取图片的公网访问地址呢?

首先,在桶的主页,配置Tab页找到公开访问

为了获得突破的公网地址,需要打开「R2.dev 子域」,点击「允许访问」,输入 allow

他会返回给你一个以 r2.dev 结尾的公网网址,即后续访问图片的网址。

当然,如果你有自己的域名且在 Cloudflare 完成了域名解析,也可以通过「自定义域」来绑定专属域名,点击「连接域」即可。

此外,对于开发者而言,一定还需要批量操作的 API。

接下来,我们看看如何通过 S3 API 进行上传下载等操作!毕竟搭建图床的 PicGo 客户端,需要依赖这种方式!

4. S3 API 调用

S3 API 是啥?

Amazon Simple Storage Service (S3),是 Amazon 提供的对象存储服务,S3 API 支持使用 RESTful API 直接通过 HTTP 请求访问 Amazon S3,所以在业界使用非常广泛,当然 Cloudflare R2 也提供了对 S3 的支持

要使用 S3 API,首先需要获取用于身份验证的 AccessKeyId 和 SecretAccessKey。

这个在 Cloudflare R2 哪里获取?

在主页右侧,点击「创建 API 令牌」

输入令牌名称,「权限」这里:对象读和写适用于特定的桶,而第一个权限的最大。

R2 Token 成功创建后,这里有所有 S3 API 需要的所有信息:

搞定各种 key 后,如何调用?

Oracle cloud 对象存储搭建图床 一样,我们依然采用boto3 SDK。

首先创建一个 client:

import os
import boto3
from botocore.client import Config

def init_s3(end_point, access_key, secret_key, region_name='auto'):
    return boto3.client(
    's3',
    aws_access_key_id=access_key,
    aws_secret_access_key=secret_key,
    use_ssl=True,
    region_name=region_name,
    endpoint_url=end_point,
    config=Config(s3={"addressing_style": "path"})
    )
    
s3_endpoint = "https://xx.r2.cloudflarestorage.com" # 换成你自己的
s3_access_key = "xx" # 换成你自己的
s3_secret_key = "xx" # 换成你自己的
region_name = "auto"
s3 = init_s3(s3_endpoint, s3_access_key, s3_secret_key, region_name)

对 Cloudflare R2 而言,这里的 region_name 要设置为:“auto”。

然后,调用这个 client 列出所有 bucket:

buckets = s3.list_buckets()['Buckets']
print(buckets)
# 输出
[{'Name': 'houge', 'CreationDate': datetime.datetime(2024, 8, 23, 8, 37, 30, 977000, tzinfo=tzutc())}]

上传一张图片试试吧:

file_name = "xx.png"
response = s3.put_object(Bucket='houge', Key=os.path.basename(file_name), Body=open(file_name, 'rb'))
if response['ResponseMetadata']['HTTPStatusCode'] == 200:
    print("Upload file successfully!")

上传成功后,在桶主页可以看到图片详细信息,下面是公网可访问的地址,无防盗链,支持嵌入到任意前端页面!

5. PicGo 图床配置

PicGo 是一个用于快速上传并获取图片 URL 的工具软件。

如果你在 Oracle cloud 对象存储搭建图床 这一篇中安装好了 s3 插件,在图床设置中就可以看到 Amazon S3 的图床,设置参考下图,把上面 API 中的信息填入即可:

完成配置后,可以在「上传区」直接拖入文件测试下,上传无误则配置成功,生成的链接会自动在系统剪贴板中。

写在最后

江湖人称赛博菩萨Cloudflare,还有很多面向开发者的免费服务,故打算做成一个系列,边探索边分享。

本文是白嫖 Cloudflare 系列教程之一,又一个免费又好用的图床搭建完毕:Cloudflare R2 + PicGo。

你学会了吗?有任何问题欢迎通过公众号找到我,一起打怪升级。

如果本文对你有帮助,不妨点个免费的赞收藏备用。

以下是Cloudflare的使用程: 1. 注册Cloudflare账户并添加网站:首先,您需要在Cloudflare注册一个账户,并将您的网站添加到Cloudflare中。这将使您的网站受到Cloudflare的保护,并且可以利用Cloudflare的各种功能。 2. 修改DNS设置:在将网站添加到Cloudflare后,您需要将域名的DNS设置指向Cloudflare提供的DNS服务器。这将使Cloudflare能够拦截所有流向您网站的流量,并将其过滤以提高安全性和性能。 3. 配置SSL证书:Cloudflare为您的网站提供免费的SSL证书,使您的网站可以通过HTTPS进行访问。您可以在Cloudflare控制面板中启用SSL证书,并选择适当的安全级别。 4. 配置防火墙规则:Cloudflare的防火墙可以帮助您保护网站免受恶意攻击和不良流量的影响。您可以在Cloudflare控制面板中配置防火墙规则,以允许或拒绝特定的IP地址、国家/地区或HTTP请求。 5. 配置缓存:Cloudflare的缓存可以帮助加速网站的加载速度,并减少服务器负载。您可以在Cloudflare控制面板中配置缓存设置,以确定哪些网页内容可以被缓存,以及缓存的时间长度。 6. 配置性能优化:Cloudflare提供了多种性能优化功能,例如Rocket Loader、自动最小化JS和CSS等。您可以在Cloudflare控制面板中配置这些功能,以帮助提高网站的加载速度。 以上是Cloudflare的基本使用程。您可以根据您的需求和实际情况,进一步配置和调整Cloudflare的设置,以获得更好的安全性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值