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

大模型云存储数据库

picture.image

猴哥的第 81 期分享,欢迎追看

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

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

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

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

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

  1. Cloudflare R2 简介

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

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

picture.image

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

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

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

picture.image

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

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

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

  1. 创建存储桶

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

picture.image

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

picture.image

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

picture.image

  1. 获取公网访问地址

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

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

picture.image

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

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

picture.image

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

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

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

  1. 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 令牌」picture.image

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

picture.image

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

picture.image

搞定各种 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!")  

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

picture.image

  1. PicGo 图床配置

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

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

picture.image

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

写在最后

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

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

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

👇 关注猴哥,快速入门AI工具

picture.image

# AI 工具:

本地部署大模型?看这篇就够了,Ollama 部署和实战

# AI应用** :**

视频生成 EasyAnimate-v3 实测,阿里开源,5 分钟带你部署体验,支持高分辨率超长视频

中国版 Whisper 来了,5分钟带你部署体验

# 效率工具:

电脑微信双开/多开?两种方法任你挑,1分钟搞定

简单3步,搞定 Windows11 系统安装/重装

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
在火山引擎云搜索服务上构建混合搜索的设计与实现
本次演讲将重点介绍字节跳动在混合搜索领域的探索,并探讨如何在多模态数据场景下进行海量数据搜索。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论