<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>图床 on Fallensakura715's Blog</title><link>https://falnsakura.top/tags/%E5%9B%BE%E5%BA%8A/</link><description>Recent content in 图床 on Fallensakura715's Blog</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><copyright>fallensakura715</copyright><lastBuildDate>Tue, 13 Jan 2026 10:37:05 +0000</lastBuildDate><atom:link href="https://falnsakura.top/tags/%E5%9B%BE%E5%BA%8A/index.xml" rel="self" type="application/rss+xml"/><item><title>使用 Cloudflare R2 零成本搭建个人图床</title><link>https://falnsakura.top/p/cloudflare-r2/</link><pubDate>Tue, 13 Jan 2026 10:37:05 +0000</pubDate><guid>https://falnsakura.top/p/cloudflare-r2/</guid><description>&lt;img src="https://imgu.falnsakura.top/PicGo/2026/01/f5d9cc160407bb69415e8c9b45ae75dd.png" alt="Featured image of post 使用 Cloudflare R2 零成本搭建个人图床" /&gt;&lt;p&gt;在写博客或者维护网站时，图片的托管一直是个让人头疼的问题。放在本地会增加 Git 仓库体积，使用公共图床又担心随时“跑路”。今天介绍如何利用 Cloudflare R2 搭建一个高速、稳定且几乎免费的个人图床。&lt;/p&gt;&#10;&lt;p&gt;另外，对象存储在折腾 serverless 的时候也是不可或缺的。&lt;/p&gt;&#10;&lt;h2 id="什么是对象存储"&gt;&lt;a href="#%e4%bb%80%e4%b9%88%e6%98%af%e5%af%b9%e8%b1%a1%e5%ad%98%e5%82%a8" class="header-anchor"&gt;&lt;/a&gt;什么是对象存储？&#10;&lt;/h2&gt;&lt;p&gt;在开始之前，我们需要了解什么是&lt;strong&gt;对象存储&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;简单来说，对象存储是一种专门为大规模非结构化数据（如图片、视频、备份文件等）设计的存储架构。与传统电脑上的“层级文件系统”（文件夹嵌套）不同，对象存储将数据作为“对象”进行管理：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;对象（Object）&lt;/strong&gt;：包含数据本身、元数据（Metadata）和全局唯一的标识符（ID）。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;桶（Bucket）&lt;/strong&gt;：存放对象的容器。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;特性&lt;/strong&gt;：它具有极高的扩展性和可靠性，通过 API 或 URL 直接访问，非常适合作为网站的静态资源存储。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;常见的对象存储服务有亚马逊的 AWS S3、阿里云的 OSS 和腾讯云的 COS。&lt;/p&gt;&#10;&lt;h3 id="什么是-s3-api-"&gt;&lt;a href="#%e4%bb%80%e4%b9%88%e6%98%af-s3-api-" class="header-anchor"&gt;&lt;/a&gt;什么是 S3 API ?&#10;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;AWS S3 (Simple Storage Service)&lt;/strong&gt; 的 API 是目前云存储行业的&lt;strong&gt;事实标准&lt;/strong&gt;。绝大多数的对象存储服务（包括 Cloudflare R2、阿里云 OSS、腾讯云 COS、MinIO）都完全兼容 S3 API。&lt;/p&gt;&#10;&lt;p&gt;理解了 S3 API 的用法，你就可以一套代码通用所有主流云存储。&lt;/p&gt;&#10;&lt;h4 id="准备工作"&gt;&lt;a href="#%e5%87%86%e5%a4%87%e5%b7%a5%e4%bd%9c" class="header-anchor"&gt;&lt;/a&gt;准备工作&#10;&lt;/h4&gt;&lt;p&gt;在使用 API 之前，你必须拥有：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Access Key ID&lt;/strong&gt; (访问密钥 ID)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Secret Access Key&lt;/strong&gt; (私有访问密钥)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Endpoint URL&lt;/strong&gt; (终结点，如果是 AWS 官方则不需要专门指定，如果是 R2 或自建 Minio 则必须指定)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Region&lt;/strong&gt; (区域，如 &lt;code&gt;us-east-1&lt;/code&gt;，R2 可以填 &lt;code&gt;auto&lt;/code&gt;)&#10;&lt;img alt="image.png" class="gallery-image" data-flex-basis="869px" data-flex-grow="362" decoding="async" height="315" loading="lazy" sizes="auto, (max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://imgu.falnsakura.top/PicGo/2026/01/c21a7f159b648959889d24f62738abf8.png" srcset="https://imgu.falnsakura.top/PicGo/2026/10/46a35e1869c6c151a7a05c662b6bed12.webp 480w, https://imgu.falnsakura.top/PicGo/2026/10/d3fa205d3c6148894e7df99772872df5.webp 800w, https://imgu.falnsakura.top/PicGo/2026/10/97916594070584242dce625efd6d9fbe.webp 1141w" width="1141"&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="为什么选择-cloudflare-r2-"&gt;&lt;a href="#%e4%b8%ba%e4%bb%80%e4%b9%88%e9%80%89%e6%8b%a9-cloudflare-r2-" class="header-anchor"&gt;&lt;/a&gt;为什么选择 Cloudflare R2 ？&#10;&lt;/h2&gt;&lt;p&gt;Cloudflare R2 是兼容 S3 标准的对象存储服务，它最大的杀手锏是：&lt;strong&gt;免收出口流量费（Zero Egress Fees）&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;传统的云厂商（如 AWS 或阿里云）通常会对图片加载产生的流量收费，如果你的博客访问量大，这笔费用会很可观。而 Cloudflare R2：&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;1. 每月前 10GB 存储免费&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="image.png" class="gallery-image" data-flex-basis="386px" data-flex-grow="160" decoding="async" height="793" loading="lazy" sizes="auto, (max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://imgu.falnsakura.top/PicGo/2026/01/b27077e30ca0fc6ee12ea1ab58791b11.png" srcset="https://imgu.falnsakura.top/PicGo/2026/10/4952a0c4ffba2d1c9df73ae8e46e60e5.webp 480w, https://imgu.falnsakura.top/PicGo/2026/10/30c9b97b2cb18585a4ef403b86147aa1.webp 800w, https://imgu.falnsakura.top/PicGo/2026/10/c65696708ae659d2d0af3c11ff39a3f1.webp 1200w, https://imgu.falnsakura.top/PicGo/2026/10/8e8a452cecb6a086da7f82a9c58439ab.webp 1276w" width="1276"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;2. 每月 A 类操作（写）100 万次免费，B 类操作（读）1000 万次免费&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="image.png" class="gallery-image" data-flex-basis="372px" data-flex-grow="155" decoding="async" height="787" loading="lazy" sizes="auto, (max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://imgu.falnsakura.top/PicGo/2026/01/3d969ddb34ac79b28e942bc965783d90.png" srcset="https://imgu.falnsakura.top/PicGo/2026/10/4d8a40f7a55ab47ba8f1c724b4ac5721.webp 480w, https://imgu.falnsakura.top/PicGo/2026/10/b7465da18492da0bdea812615b902531.webp 800w, https://imgu.falnsakura.top/PicGo/2026/10/fbed035f8d270cb09891ed01cd7f1c56.webp 1200w, https://imgu.falnsakura.top/PicGo/2026/10/d906f6d99672f496d0a446619ffa0aaa.webp 1221w" width="1221"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;3. 完全没有流量费&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;对于个人来说，这几乎就是永久免费。&lt;/p&gt;&#10;&lt;h2 id="搭建步骤"&gt;&lt;a href="#%e6%90%ad%e5%bb%ba%e6%ad%a5%e9%aa%a4" class="header-anchor"&gt;&lt;/a&gt;搭建步骤&#10;&lt;/h2&gt;&lt;h3 id="1-开启-cloudflare-r2"&gt;&lt;a href="#1-%e5%bc%80%e5%90%af-cloudflare-r2" class="header-anchor"&gt;&lt;/a&gt;1. 开启 Cloudflare R2&#10;&lt;/h3&gt;&lt;p&gt;登录 Cloudflare 控制台，点击左侧菜单栏的 &lt;code&gt;R2&lt;/code&gt;。你需要绑定一张信用卡或 PayPal 进行身份验证（虽然在免费额度内不会扣费）。&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="image.png" class="gallery-image" data-flex-basis="501px" data-flex-grow="208" decoding="async" height="1178" loading="lazy" sizes="auto, (max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://imgu.falnsakura.top/PicGo/2026/01/4409c8c8a36a4daa3705533f520a6b94.png" srcset="https://imgu.falnsakura.top/PicGo/2026/10/e3186ef464cc3e5d31532c1171bf4afe.webp 480w, https://imgu.falnsakura.top/PicGo/2026/10/b1eaa4f963b4f14865744058ff4a9b7e.webp 800w, https://imgu.falnsakura.top/PicGo/2026/10/9fedf440c3d6d43d60a055973054520a.webp 1200w, https://imgu.falnsakura.top/PicGo/2026/10/48c610193e34905fc81d60de6b3244f1.webp 1600w" width="2462"&gt;&#10;&lt;/p&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;如果 API 调用或者存储容量超了 Free Tier 会扣钱的&#10;&lt;img alt="image.png" class="gallery-image" data-flex-basis="1103px" data-flex-grow="459" decoding="async" height="212" loading="lazy" sizes="auto, (max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://imgu.falnsakura.top/PicGo/2026/01/09a77ba692bbd15bfe8cefc5b3db7bab.png" srcset="https://imgu.falnsakura.top/PicGo/2026/10/d3ebc3d65aadc878ebacae811c76351d.webp 480w, https://imgu.falnsakura.top/PicGo/2026/10/16878cbe91a6d124591f439101dd8ced.webp 800w, https://imgu.falnsakura.top/PicGo/2026/10/e11c825aa203cd745ae5f157edbb3fe9.webp 975w" width="975"&gt;&#10;&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;我用的是工行星座卡（免年费😋），注册一个非国区 PayPal 也可以，能绑银联卡。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;&lt;img alt="fe04b05c774a9ced9931acc98d334641.png" class="gallery-image" data-flex-basis="461px" data-flex-grow="192" decoding="async" height="613" loading="lazy" sizes="auto, (max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://imgu.falnsakura.top/PicGo/2026/01/f4f7779838a094ecfdf126facdeeecbd.png" srcset="https://imgu.falnsakura.top/PicGo/2026/10/52ad49ece5442eab685d0a32fc9778fb.webp 480w, https://imgu.falnsakura.top/PicGo/2026/10/91c0aef693d7d9451497f9c9f8041548.webp 800w, https://imgu.falnsakura.top/PicGo/2026/10/f6efacd6f82cdb26ffbe64f1b6a950ea.webp 1179w" width="1179"&gt;&#10;&lt;/p&gt;&#10;&lt;h3 id="2-创建-bucket桶"&gt;&lt;a href="#2-%e5%88%9b%e5%bb%ba-bucket%e6%a1%b6" class="header-anchor"&gt;&lt;/a&gt;2. 创建 Bucket（桶）&#10;&lt;/h3&gt;&lt;p&gt;点击 &lt;code&gt;Create bucket&lt;/code&gt;，起一个名字（例如 &lt;code&gt;my-blog-images&lt;/code&gt;），区域选择 &lt;code&gt;Automatic&lt;/code&gt; 即可。&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="image.png" class="gallery-image" data-flex-basis="466px" data-flex-grow="194" decoding="async" height="1038" loading="lazy" sizes="auto, (max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://imgu.falnsakura.top/PicGo/2026/01/9f0ae89c39f61919ba3802bfec7e8bc2.png" srcset="https://imgu.falnsakura.top/PicGo/2026/10/2bcb3245c11f2f776ef0513156117697.webp 480w, https://imgu.falnsakura.top/PicGo/2026/10/28464fdd5290f219ff554f5f0048fc90.webp 800w, https://imgu.falnsakura.top/PicGo/2026/10/07445d3a4eae92b86dbec9af0c11f877.webp 1200w, https://imgu.falnsakura.top/PicGo/2026/10/f2c131a3a6b278f13ebc9a92f7740576.webp 1600w" width="2018"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="image.png" class="gallery-image" data-flex-basis="288px" data-flex-grow="120" decoding="async" height="1181" loading="lazy" sizes="auto, (max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://imgu.falnsakura.top/PicGo/2026/01/c45b517cd587b1005a6d388e50ccd0f7.png" srcset="https://imgu.falnsakura.top/PicGo/2026/10/58603d5f37186698459b64df2c0d8c5f.webp 480w, https://imgu.falnsakura.top/PicGo/2026/10/cfc4db98a4b2ebccd13c7f6bdb194b25.webp 800w, https://imgu.falnsakura.top/PicGo/2026/10/8efaca29c71aa9474583f244ea2602cb.webp 1200w, https://imgu.falnsakura.top/PicGo/2026/10/83fea9913b12f5e16743e3e636f15184.webp 1421w" width="1421"&gt;&#10;&lt;/p&gt;&#10;&lt;h3 id="3-配置公开访问"&gt;&lt;a href="#3-%e9%85%8d%e7%bd%ae%e5%85%ac%e5%bc%80%e8%ae%bf%e9%97%ae" class="header-anchor"&gt;&lt;/a&gt;3. 配置公开访问&#10;&lt;/h3&gt;&lt;p&gt;R2 默认不允许公开访问，只能通过 API 访问。若想搭建图床之类的并能直接访问，需要配置有域名。&lt;/p&gt;&#10;&lt;p&gt;在 Bucket 详情页中，选择 &lt;code&gt;Settings&lt;/code&gt; 选项卡：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;找到 &lt;strong&gt;Custom Domain&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;li&gt;点击 &lt;strong&gt;Add&lt;/strong&gt;，输入你的子域名（例如 &lt;code&gt;img.yourdomain.com&lt;/code&gt;）。&lt;/li&gt;&#10;&lt;li&gt;这样你就可以通过自己的域名访问图片了，且自带 CDN 加速。&#10;&lt;img alt="image.png" class="gallery-image" data-flex-basis="408px" data-flex-grow="170" decoding="async" height="1059" loading="lazy" sizes="auto, (max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://imgu.falnsakura.top/PicGo/2026/01/63e384cc54f9de5b890751d6d455287d.png" srcset="https://imgu.falnsakura.top/PicGo/2026/10/9757e0064fe98834e119503232be7dc7.webp 480w, https://imgu.falnsakura.top/PicGo/2026/10/25aa0edd0aa8b138a76128f3660371ee.webp 800w, https://imgu.falnsakura.top/PicGo/2026/10/b54505ea0f0222fd0a6845dc1fd59691.webp 1200w, https://imgu.falnsakura.top/PicGo/2026/10/e9de8db1d06cfc8ca8fa2d7ea0edce34.webp 1600w" width="1801"&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;如果你的域名没有放在 Cloudflare 托管，可以将域名迁移到 Cloudflare，或者使用 Cloudflare Workers 中转。&#10;如果你只想搬子域名（例如 &lt;code&gt;img.abc.com&lt;/code&gt;），可以在你原来的服务商那里，把 &lt;code&gt;img&lt;/code&gt; 这个子域名的 &lt;strong&gt;NS 记录&lt;/strong&gt; 指向 Cloudflare 分配给你的 NS 地址。这叫“DNS 委派”。&#10;如果在 Cloudflare ，cf 会自动帮你添加 DNS记录。&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;&lt;img alt="image.png" class="gallery-image" data-flex-basis="6388px" data-flex-grow="2661" decoding="async" height="71" loading="lazy" sizes="auto, (max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://imgu.falnsakura.top/PicGo/2026/01/f443956fbd30d12f35c64d8b0df2798e.png" srcset="https://imgu.falnsakura.top/PicGo/2026/10/e4e2d46e131295aea016626e0852c238.webp 480w, https://imgu.falnsakura.top/PicGo/2026/10/20fddb34a18bcc8b1dda2da4e6438115.webp 800w, https://imgu.falnsakura.top/PicGo/2026/10/cf5a51093b11aec76100ceba160a6fba.webp 1200w, https://imgu.falnsakura.top/PicGo/2026/10/03eb0dab20e4fe56bf359a1a2260ab6a.webp 1600w" width="1890"&gt;&#10;&lt;/p&gt;&#10;&lt;h3 id="4-获取-api-密钥"&gt;&lt;a href="#4-%e8%8e%b7%e5%8f%96-api-%e5%af%86%e9%92%a5" class="header-anchor"&gt;&lt;/a&gt;4. 获取 API 密钥&#10;&lt;/h3&gt;&lt;p&gt;回到 R2 主页，点击右侧的 &lt;strong&gt;Manage&lt;/strong&gt; ：&#10;&lt;img alt="image.png" class="gallery-image" data-flex-basis="867px" data-flex-grow="361" decoding="async" height="197" loading="lazy" sizes="auto, (max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://imgu.falnsakura.top/PicGo/2026/01/77a40acffcef2ef6d45b80504eda5fcb.png" srcset="https://imgu.falnsakura.top/PicGo/2026/10/4a43d9f953784020cbf9e6334de0021c.webp 480w, https://imgu.falnsakura.top/PicGo/2026/10/a16253cab628b42926fd1c4d0af2f3bd.webp 712w" width="712"&gt;&#10;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;点击 &lt;strong&gt;Create User API token&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;img alt="image.png" class="gallery-image" data-flex-basis="2970px" data-flex-grow="1237" decoding="async" height="151" loading="lazy" sizes="auto, (max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://imgu.falnsakura.top/PicGo/2026/01/c10e8781e73fe79d099862091ecfc06c.png" srcset="https://imgu.falnsakura.top/PicGo/2026/10/77ad102925b34fd1cee57adb8e1faa24.webp 480w, https://imgu.falnsakura.top/PicGo/2026/10/6db5e81d8595722c14773193395d8b97.webp 800w, https://imgu.falnsakura.top/PicGo/2026/10/13770f0ffc0c5366a621e46811e1c41c.webp 1200w, https://imgu.falnsakura.top/PicGo/2026/10/29f6e44d74292953ca3371c159cf8f3a.webp 1600w" width="1869"&gt;&#10;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;权限选择 &lt;strong&gt;Object Read &amp;amp; Write&lt;/strong&gt;。&#10;&lt;img alt="image.png" class="gallery-image" data-flex-basis="261px" data-flex-grow="108" decoding="async" height="982" loading="lazy" sizes="auto, (max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://imgu.falnsakura.top/PicGo/2026/01/5b6071e2f933ed3068a1e78f292fe29f.png" srcset="https://imgu.falnsakura.top/PicGo/2026/10/b28adb66e91f85eacd6fae247310f133.webp 480w, https://imgu.falnsakura.top/PicGo/2026/10/8f802ec2492dcb60e7cfaea9f166a9c2.webp 800w, https://imgu.falnsakura.top/PicGo/2026/10/94db1d04c4e4cf6c30f775df29cec8e6.webp 1068w" width="1068"&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;保存好生成的 &lt;code&gt;Access Key ID&lt;/code&gt; 和 &lt;code&gt;Secret Access Key&lt;/code&gt;，以及 &lt;code&gt;Endpoint&lt;/code&gt;。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="配置-cors-策略"&gt;&lt;a href="#%e9%85%8d%e7%bd%ae-cors-%e7%ad%96%e7%95%a5" class="header-anchor"&gt;&lt;/a&gt;配置 CORS 策略&#10;&lt;/h2&gt;&lt;p&gt;**CORS (Cross-Origin Resource Sharing) 是一种安全机制。简单来说，由于浏览器的“同源策略”，默认情况下，域名 A 的网页不允许去读域名 B 的资源。&lt;/p&gt;&#10;&lt;p&gt;如果你在 &lt;code&gt;blog.com&lt;/code&gt; 上引用了 &lt;code&gt;img.com&lt;/code&gt; 的图片，并且你需要通过脚本（比如 Canvas 处理、图片懒加载插件等）去操作这张图片，就必须在 &lt;code&gt;img.com&lt;/code&gt;（即 R2 存储桶）上明确允许 &lt;code&gt;blog.com&lt;/code&gt; 的访问。&lt;/p&gt;&#10;&lt;h3 id="1-进入设置界面"&gt;&lt;a href="#1-%e8%bf%9b%e5%85%a5%e8%ae%be%e7%bd%ae%e7%95%8c%e9%9d%a2" class="header-anchor"&gt;&lt;/a&gt;1. 进入设置界面&#10;&lt;/h3&gt;&lt;ol&gt;&#10;&lt;li&gt;登录 Cloudflare 控制台。&lt;/li&gt;&#10;&lt;li&gt;点击左侧 &lt;strong&gt;R2&lt;/strong&gt;，选择你创建好的 &lt;strong&gt;Bucket（存储桶）&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;li&gt;点击上方的 &lt;strong&gt;Settings&lt;/strong&gt; 选项卡。&lt;/li&gt;&#10;&lt;li&gt;向下滚动找到 &lt;strong&gt;CORS Policy&lt;/strong&gt; 部分，点击 &lt;strong&gt;Add CORS policy&lt;/strong&gt;。&#10;&lt;img alt="image.png" class="gallery-image" data-flex-basis="586px" data-flex-grow="244" decoding="async" height="716" loading="lazy" sizes="auto, (max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://imgu.falnsakura.top/PicGo/2026/01/4341e285db6a4d67dc0d56c16add0477.png" srcset="https://imgu.falnsakura.top/PicGo/2026/10/b0f7638cdfb93651ccfc564e01dde0fb.webp 480w, https://imgu.falnsakura.top/PicGo/2026/10/c061ce2ac43ffc779e1b863057f5b461.webp 800w, https://imgu.falnsakura.top/PicGo/2026/10/19746d6238bfa4a1d0137cf1efd6a883.webp 1200w, https://imgu.falnsakura.top/PicGo/2026/10/02bf5b166633d5d02d4f2f8b482344e4.webp 1600w" width="1750"&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 id="2-填写配置文件"&gt;&lt;a href="#2-%e5%a1%ab%e5%86%99%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6" class="header-anchor"&gt;&lt;/a&gt;2. 填写配置文件&#10;&lt;/h3&gt;&lt;p&gt;在弹出的编辑框中，复制并粘贴以下 JSON 代码：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 2&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 3&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 4&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 5&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 6&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 7&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 8&#10;&lt;/span&gt;&lt;span class="lnt"&gt; 9&#10;&lt;/span&gt;&lt;span class="lnt"&gt;10&#10;&lt;/span&gt;&lt;span class="lnt"&gt;11&#10;&lt;/span&gt;&lt;span class="lnt"&gt;12&#10;&lt;/span&gt;&lt;span class="lnt"&gt;13&#10;&lt;/span&gt;&lt;span class="lnt"&gt;14&#10;&lt;/span&gt;&lt;span class="lnt"&gt;15&#10;&lt;/span&gt;&lt;span class="lnt"&gt;16&#10;&lt;/span&gt;&lt;span class="lnt"&gt;17&#10;&lt;/span&gt;&lt;span class="lnt"&gt;18&#10;&lt;/span&gt;&lt;span class="lnt"&gt;19&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="nt"&gt;&amp;#34;AllowedOrigins&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      &lt;span class="s2"&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="p"&gt;],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="nt"&gt;&amp;#34;AllowedMethods&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      &lt;span class="s2"&gt;&amp;#34;GET&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      &lt;span class="s2"&gt;&amp;#34;PUT&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      &lt;span class="s2"&gt;&amp;#34;POST&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      &lt;span class="s2"&gt;&amp;#34;DELETE&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      &lt;span class="s2"&gt;&amp;#34;HEAD&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="p"&gt;],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="nt"&gt;&amp;#34;AllowedHeaders&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;      &lt;span class="s2"&gt;&amp;#34;*&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="p"&gt;],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="nt"&gt;&amp;#34;ExposeHeaders&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="nt"&gt;&amp;#34;MaxAgeSeconds&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;h2 id="配合-picgo-实现自动化上传"&gt;&lt;a href="#%e9%85%8d%e5%90%88-picgo-%e5%ae%9e%e7%8e%b0%e8%87%aa%e5%8a%a8%e5%8c%96%e4%b8%8a%e4%bc%a0" class="header-anchor"&gt;&lt;/a&gt;配合 PicGo 实现自动化上传&#10;&lt;/h2&gt;&lt;p&gt;手动上传图片很麻烦，我们推荐使用 &lt;strong&gt;PicGo&lt;/strong&gt; 客户端：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;在 PicGo 中安装 &lt;code&gt;s3&lt;/code&gt; 插件。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&lt;img alt="image.png" class="gallery-image" data-flex-basis="829px" data-flex-grow="345" decoding="async" height="312" loading="lazy" sizes="auto, (max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://imgu.falnsakura.top/PicGo/2026/01/24a0dca488b42d1bd4088208fd8f09e5.png" srcset="https://imgu.falnsakura.top/PicGo/2026/10/6cfc4f4761b8a16ecee1c1f85dacf2a2.webp 480w, https://imgu.falnsakura.top/PicGo/2026/10/e136d0f97e696c7dbe320baa619c71d1.webp 800w, https://imgu.falnsakura.top/PicGo/2026/10/a83931307ff6a084120f96af82a1ac95.webp 1078w" width="1078"&gt;&#10;&lt;/p&gt;&#10;&lt;ol start="2"&gt;&#10;&lt;li&gt;配置插件参数：&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;应用密钥 ID&lt;/strong&gt;：你的 Access Key ID。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;应用密钥&lt;/strong&gt;：你的 Secret Access Key。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;桶名&lt;/strong&gt;：&lt;code&gt;my-blog-images&lt;/code&gt;。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;自定义节点&lt;/strong&gt;：你的 R2 Endpoint（去掉末尾的桶名部分）。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;自定义域名&lt;/strong&gt;：你绑定的自定义域名（如 &lt;code&gt;https://img.yourdomain.com&lt;/code&gt;）。&#10;&lt;img alt="image.png" class="gallery-image" data-flex-basis="456px" data-flex-grow="190" decoding="async" height="695" loading="lazy" sizes="auto, (max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://imgu.falnsakura.top/PicGo/2026/01/420912d092611b7ba6094c8f1f0cd310.png" srcset="https://imgu.falnsakura.top/PicGo/2026/10/eeeb90f10e9b81741e270e2fb8634c35.webp 480w, https://imgu.falnsakura.top/PicGo/2026/10/393f5dbd84e98c7840677fc5a1e43fdc.webp 800w, https://imgu.falnsakura.top/PicGo/2026/10/b1d364c1d1daf1989ebafdabbc6c4c30.webp 1200w, https://imgu.falnsakura.top/PicGo/2026/10/2d5cdca3278a77e443525f2b79e47cf0.webp 1323w" width="1323"&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10; &lt;blockquote&gt;&#10; &lt;p&gt;可以配合图片压缩食用，节省存储空间，不会牺牲太多图片质量&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;h2 id="把-picgo-放到-obsidian-实现图片无缝上传"&gt;&lt;a href="#%e6%8a%8a-picgo-%e6%94%be%e5%88%b0-obsidian-%e5%ae%9e%e7%8e%b0%e5%9b%be%e7%89%87%e6%97%a0%e7%bc%9d%e4%b8%8a%e4%bc%a0" class="header-anchor"&gt;&lt;/a&gt;把 PicGo 放到 Obsidian 实现图片无缝上传&#10;&lt;/h2&gt;&lt;ol&gt;&#10;&lt;li&gt;安装 &lt;code&gt;Image auto upload&lt;/code&gt; 插件&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&lt;img alt="image.png" class="gallery-image" data-flex-basis="357px" data-flex-grow="148" decoding="async" height="1269" loading="lazy" sizes="auto, (max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://imgu.falnsakura.top/PicGo/2026/01/d5856c40359e85599dfd931501638ad5.png" srcset="https://imgu.falnsakura.top/PicGo/2026/10/9eb1ae209a81eda2a155a75e45dd755a.webp 480w, https://imgu.falnsakura.top/PicGo/2026/10/483bc8a52baf092c60c53f7baa5713da.webp 800w, https://imgu.falnsakura.top/PicGo/2026/10/5cc0df6f39ddb9df26675cf753b60b88.webp 1200w, https://imgu.falnsakura.top/PicGo/2026/10/c1a33bda57098f93b48f4e993365b667.webp 1600w" width="1890"&gt;&#10;&lt;/p&gt;&#10;&lt;ol start="2"&gt;&#10;&lt;li&gt;配置插件&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&lt;img alt="image.png" class="gallery-image" data-flex-basis="252px" data-flex-grow="105" decoding="async" height="1257" loading="lazy" sizes="auto, (max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://imgu.falnsakura.top/PicGo/2026/01/2e692fdeebd3a3d303560ee6cd8b65c7.png" srcset="https://imgu.falnsakura.top/PicGo/2026/10/1dfab67e10184603a944ca309691ae43.webp 480w, https://imgu.falnsakura.top/PicGo/2026/10/634ae5abc8b3f4390d3f0755f62d0cad.webp 800w, https://imgu.falnsakura.top/PicGo/2026/10/23b242acf0cd88a3762a443393e1b90d.webp 1200w, https://imgu.falnsakura.top/PicGo/2026/10/3ad18f796e9a616653caeb014ca8e4b5.webp 1320w" width="1320"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;配置完成后，在写 md 的时候把图片复制进来，图片会自动上传到 R2。再也不用操心传 md 还得传图片的问题了😋。&lt;/p&gt;&#10;&lt;h2 id="配置-cloudflare-优选域名"&gt;&lt;a href="#%e9%85%8d%e7%bd%ae-cloudflare-%e4%bc%98%e9%80%89%e5%9f%9f%e5%90%8d" class="header-anchor"&gt;&lt;/a&gt;配置 Cloudflare 优选域名&#10;&lt;/h2&gt;&lt;p&gt;如果嫌国内访问太慢，可以用 Cloudflare Workers 反代来配置 Cloudflare 优选域名。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;&#10;&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1&#10;&lt;/span&gt;&lt;span class="lnt"&gt;2&#10;&lt;/span&gt;&lt;span class="lnt"&gt;3&#10;&lt;/span&gt;&lt;span class="lnt"&gt;4&#10;&lt;/span&gt;&lt;span class="lnt"&gt;5&#10;&lt;/span&gt;&lt;span class="lnt"&gt;6&#10;&lt;/span&gt;&lt;span class="lnt"&gt;7&#10;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#10;&lt;td class="lntd"&gt;&#10;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  &lt;span class="kr"&gt;async&lt;/span&gt; &lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;URL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;hostname&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;img.yourdomain.com&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;  &lt;span class="p"&gt;},&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;};&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;再添加 Workers 路由，把 DNS 记录里的 CNAME 指向的域名改成 Cloudflare 优选域名即可。&lt;/p&gt;&#10;&lt;p&gt;优选前，只解析到了两个 IP&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="image.png" class="gallery-image" data-flex-basis="349px" data-flex-grow="145" decoding="async" height="1209" loading="lazy" sizes="auto, (max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://imgu.falnsakura.top/PicGo/2026/01/37ad2ade0c2312357a29635e61b745b3.png" srcset="https://imgu.falnsakura.top/PicGo/2026/10/f9687cbfb158ec4398133795d355ba6f.webp 480w, https://imgu.falnsakura.top/PicGo/2026/10/2106dcb54a157e44e3bf166d092b7af6.webp 800w, https://imgu.falnsakura.top/PicGo/2026/10/7f8a18204cc49c7231ad0567c745ed43.webp 1200w, https://imgu.falnsakura.top/PicGo/2026/10/d7c1f9727db96dffd8cde02c6dcab85e.webp 1600w" width="1759"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;优选后&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="image.png" class="gallery-image" data-flex-basis="350px" data-flex-grow="146" decoding="async" height="1202" loading="lazy" sizes="auto, (max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://imgu.falnsakura.top/PicGo/2026/01/b2adaa7d951fbc5a4d88f6a787e66b47.png" srcset="https://imgu.falnsakura.top/PicGo/2026/10/c5021cda6c3b4369185f89d054ac3d0a.webp 480w, https://imgu.falnsakura.top/PicGo/2026/10/63569cadb2977ab234a798c95b68e3e5.webp 800w, https://imgu.falnsakura.top/PicGo/2026/10/024d39e247de0ac09230b44ae9a6b6d1.webp 1200w, https://imgu.falnsakura.top/PicGo/2026/10/fd9c50f44e60a710775337df6b68e80e.webp 1600w" width="1757"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;搭建完成后，你就可以访问 &lt;code&gt;https://img.yourdomain.com/bucketname/path&lt;/code&gt; 访问你的图片了。&lt;/p&gt;&#10;</description></item></channel></rss>