CloudFlare R2 个人免费图床搭建教程

CloudFlare R2 个人免费图床搭建教程

在互联网时代,我们经常需要将图片上传到网络上分享给朋友或者发布到博客、社交媒体等平台上。然而,直接将图片上传到公共服务器上可能会面临被恶意利用的风险。为了保护个人隐私和图片安全,我们可以搭建一个自己的图床。本文将介绍如何使用 CloudFlare R2 搭建一个安全可靠而且免费的个人图床。


一、CloudFlare R2 简介

CloudFlare R2 是 Cloudflare 公司推出的一款兼容 S3 API 的免费云存储服务,它允许用户在全球范围内的分布式网络上存储和检索数据。 这项服务的设计目标之一是提供低延迟、高吞吐量的存储体验,利用横跨 100 多国家中 275 个城市的内容交付网络来实现这一目标。


二丶CloudFlare R2 的特色功能:

  1. 全球分布式对象存储:R2的存储网络横跨100多个国家中的275个城市,确保用户可以获取到低延迟、高吞吐量的存储服务。

  2. 零流量费:与其它云存储服务相比,R2提供了零流量费的优势,• 每月有10G免费额度,对于个人站长来说足够使用

    Untitled

  3. 与Cloudflare Workers整合的动态功能:R2可以与Cloudflare Workers集成,从而提供动态功能。

  4. 轻松集成:R2的设计允许其与其他Cloudflare产品轻松集成。例如,计划允许Durable Objects将R2配置为备份目标,并提供R2和Cloudflare缓存之间的自动集成,从而延长不常改变的对象的缓存寿命。

  5. 开发人员友好:R2允许开发人员存储大量非结构化数据,且无需支付与典型云存储服务相关的昂贵出口带宽费用。

  6. 自定义域名和HTTP/HTTPS支持:类似于常规对象存储服务,R2也支持自定义域名和HTTP/HTTPS。域名无需备案,接入 Cloudflare 即可


三丶准备工作

  1. CloudFlare 账号注册:https://www.cloudflare.com/
  2. 购买域名:选择一个合适的域名,并在 CloudFlare 上进行域名解析。
  3. 绑定信用卡(只用于验证)

四丶图床搭建

4.1 创建存储桶

在侧边菜单找到 R2 服务,然后点击创建存储桶,名称随意喜欢就好,地区选亚太地区即可

Untitled

4.2 绑定域名

刚创建好的桶虽然可以上传图片、文件之类的,但是默认不可通过公网访问。

虽然可以用cloudflare提供的二级域名访问,但是有一些频率速率方面的限制,而且.dev的域名也被大防火墙拦截了,所以还是绑定自己域名更好一些。

再桶的设置里找到自定义域选项,添加自定义域名即可,

推荐使用二级域名,eg:image.yourdomain.com

Untitled

4.3 创建 R2 的 API token

提示:api 令牌只会显示 1 次。需记录到本地备用。

  • 在 R2 的控制台右侧 点击 管理 R2 API 令牌 —>创建API令牌
  • 权限选对象读和写都可
  • 指定存储桶选择你刚创建的桶
  • TTL选永久。其他不变。

Untitled

Untitled

Untitled


五丶图床客户端配置

PicGo

Untitled

应用密钥ID访问密钥 ID
应用密钥机密访问密钥
桶命存储桶的名字
文件路径自己设置,默认也是可以的
地区创建的地区,例如apac
自定义节点S3 api

结论/结语

感谢您阅读我的文章!如果您觉得这篇文章对您有所帮助,或者有任何想法和建议,请随时在评论区留言。您的反馈对我来说非常重要,我会认真倾听并不断改进我的内容。
同时,如果您喜欢这篇文章,请考虑分享给您的朋友和家人,让更多的人受益于这些知识和见解。此外,您还可以关注我的博客公众号,以便第一时间获取我的最新文章和动态。
再次感谢您的支持和关注,期待与您在未来的文章中再次相遇!

当然可以。这是一个简单的HTML、JavaScript (使用MD5库) 和 AJAX的例子来实现登录表单: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>登录</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script> <!-- 引入MD5库 --> <script> function encryptPassword(password) { // 使用CryptoJS的MD5函数加密密码 var encrypted = CryptoJS.MD5(password); return encrypted.toString(); } function submitForm() { // 获取输入框的值 var username = document.getElementById("username").value; var password = document.getElementById("password").value; // 对密码进行加密 var hashedPassword = encryptPassword(password); // 创建一个新的FormData对象 var formData = new FormData(); formData.append('username', username); formData.append('hashed_password', hashedPassword); // 创建Ajax请求 var xhr = new XMLHttpRequest(); xhr.open('POST', 'your-server-url/login.submit', true); // 替换为你的后端接口地址 xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onload = function () { if (xhr.status === 200) { console.log('Login successful:', xhr.responseText); } else { console.error('Error:', xhr.statusText); } }; xhr.send(formData); } </script> </head> <body> <h2>Login Form</h2> <form id="loginForm" onsubmit="event.preventDefault(); submitForm();"> <label for="username">Username:</label><br> <input type="text" id="username" name="username"><br> <label for="password">Password:</label><br> <input type="password" id="password" name="password"><br> <button type="submit">Login</button> </form> </body> </html> ``` 在这个例子中,当用户点击登录按钮时,`onsubmit`事件会阻止表单默认提交行为并触发`submitForm()`函数。这个函数获取用户名和密码,对密码进行MD5加密,然后创建一个包含加密后的密码的FormData对象,通过AJAX发送到指定的`login.submit`接口。 注意:实际项目中,你需要替换 `'your-server-url/login.submit'` 为你真实的后端API地址,并确保服务器端能正确处理这样的加密数据。同时,对于安全原因,前端加密并不足以保证密码安全,通常后端还会进行进一步的安全处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MatrixWave

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值