页面目录
返回工具领取页

这是公众号教程的站内阅读版。教程界面配图基于 v1.4.22;当前可领取版本和更新说明请查看工具领取页。

教你如何搭建免费的私有图床:网页后台+R2+拾玖图床

先看懂这些词,再动手

Cloudflare 是一个提供网站网络、安全与云服务的平台。R2 是它旗下存放图片、PDF 等文件的云端仓库。

可以叫它一声“赛博大善人”:R2 标准存储有免费额度,公网出网流量不收费;存储和请求超出额度仍会计费。查看官方计费说明。

图床
把图片或文件上传后,返回一个可分享链接的服务。
存储桶(Bucket)
R2 里的一个文件容器,类似专门放这套图床文件的“大文件夹”。
API(接口)
软件之间办事的入口;桌面工具通过它向网页图床提交文件。
令牌(Token)
给软件用的通行证。上传令牌允许上传;部署令牌用于配置服务;统计授权用于看用量,三者不能混用。
域名 / 子域名
方便记忆的网址名称;如 example.com 是域名,img.example.com 是给图床用的子域名。
公网访问
拿到文件链接的人能从互联网打开它。公开文件不代表公开上传和管理权限。
Worker / 部署
Worker 是运行在 Cloudflare 云端的小程序;部署就是把图床程序放上去,让它开始提供服务。
KV(键值存储)
保存配置和文件说明的“小账本”;图片和 PDF 本体仍放在 R2 里。
HTTPS / TLS
让传输中的数据加密,减少被旁路偷看的风险;不是把公开文件变成只有你能看。
GitHub / Fork / Actions
GitHub 存放项目代码;Fork 是复制一份到自己账户;Actions 按流程构建和部署。

需要智能体协助完成部署?打开分阶段部署助手,逐步复制对应提示词,并在每一步完成验收。

作者:拾玖Blues|公众号:拾玖说跨境AI
更新:2026-10-27|桌面版 v1.4.22|网页端基于 CloudFlare-ImgBed

公众号封面

这次搭的是带网页管理后台的图床。R2 保存文件,CloudFlare-ImgBed 提供上传接口和管理页面,拾玖图床桌面工具负责拖入、预览和批量上传。

上传路径是:桌面工具 → 图床上传 API → R2。读取路径是:图床域名 /file/文件名 → Worker → R2。桌面工具填写的是图床地址和上传令牌,不是 R2 Access Key。

三层架构示意

这里的“私有”指自主管理上传权限;按本文配置的文件链接可以公开读取,并不等于私密网盘。“免费”指相关服务免费额度内使用。R2 之外,Workers、KV 也有各自额度,域名注册和续费可能另付费,不能承诺整套永远零账单。

准备:Cloudflare 账户、GitHub 账户、已接入 Cloudflare 的自有域名;使用桌面工具需要 Windows。本文按照作者现有 Workers+KV+R2 方案整理,不混用 Pages、D1 或 S3 直连路线。历史激活图和作者后台图为真实截图;配置流程图是示意;桌面截图使用演示数据。

做产品运营,为什么用这套图床?

整理产品资料时,麻烦的不只是把图片传上去,而是上传以后还能认出来:这条链接对应哪个产品、哪张主图、哪张细节图。

拾玖图床会保留原文件名主体,再添加时间戳后缀。如果开启“包含文件夹名”,目录名也会加到文件名前面。例如,本地的 商品A/细节/侧面.jpg,上传后可以命名为 商品A_细节_侧面_20261027_183000_123.jpg。

返回链接末尾的文件名,与云端保存的文件名保持一致。看链接就能辨认产品、目录和图片用途,再对照本地原图核查。这里保留的是原文件名主体,并非上传前后每个字符都不变:时间戳、可选目录名会加入文件名,特殊符号在 URL 中可能采用编码形式。

对需要提交产品模板、整理图片链接表的运营来说,这样更方便:

它能帮助减少错配和混乱,但不会自动判断图片是否属于某个产品。提交模板前,仍应对照产品行、文件名和缩略图检查一次。

01|开通 R2,创建标准存储桶和 KV

历史 R2 激活成功截图

进入 Cloudflare 的 R2 对象存储,按要求开通并确认付款方式,再创建标准存储桶,例如 my-imgbed-files。本文无需先创建 S3 Access Key。

R2 标准存储每月免费额度为 10 GB-month、100 万次 A 类操作、1000 万次 B 类操作,公网出网费为 0;超额仍计费,免费层不适用于低频存储。官方价格

然后进入 Workers KV,新建一个命名空间,例如 img_url,记录它的 ID。R2 装文件,KV 保存图床的配置与文件元数据。作者当前配置使用 KV,没有同时绑定 D1;上游也支持 D1,但那是另一条配置路线。

检查:R2 桶和 KV 都已建立,名称与 ID 分清楚。

02|部署网页图床,而不是只建一个桶

Workers 部署操作示意

网页端使用开源项目 CloudFlare-ImgBed,遵循 MIT 许可证。以下采用它提供的 GitHub Actions Workers 部署方式;作者本机还有桌面端配套适配,不代表上游默认包含这些扩展。

  1. Fork 项目到自己的 GitHub 账户,并启用该仓库的 Actions。
  2. 创建用于部署的 Cloudflare API Token,按项目部署文档配置相应账户权限,记录账户 ID。这个 Token 只用于部署,不是桌面上传令牌。
  3. 在 Fork 仓库的 Settings → Secrets and variables → Actions → Secrets 添加下表配置。
Secret 名称 填写内容
CLOUDFLARE_API_TOKEN 有部署权限的 Cloudflare Token
CLOUDFLARE_ACCOUNT_ID 自己的账户 ID
KV_NAMESPACE_ID 第一步创建的 KV ID
R2_BUCKET_NAME 第一步创建的 R2 桶名
WORKER_NAME 自定 Worker 名称,例如 my-imgbed
WORKER_VARS 业务配置 JSON,见下方示例

为避免新站裸露管理端,提前设置自己的管理员密码和用户访问码。下面只是一份占位模板,三个占位值必须自行替换,不能原样使用:

{
  "BASIC_USER": {"value": "YOUR_ADMIN_NAME", "type": "text"},
  "BASIC_PASS": {"value": "YOUR_UNIQUE_ADMIN_PASSWORD", "type": "secret"},
  "AUTH_CODE": {"value": "YOUR_UNIQUE_USER_ACCESS_CODE", "type": "secret"}
}

进入 Actions → Deploy to Cloudflare Workers → Run workflow,等待完成。检查日志中部署和 Secret 写入都成功;失败时先修复,不要把失败状态当作完成。上游部署流程及所需权限请以Workers 部署文档为准。

检查:Cloudflare 中能找到 Worker;资源绑定里 KV 变量名是 img_url,R2 变量名是 img_r2。名称必须匹配程序读取的名称。

03|图床子域名绑定到 Worker

绑定和读取路径示意

打开这个 Worker 的域名与路由设置,添加自定义域,例如 img.example.com,等待生效。这个域名对应网页图床 Worker,不是直接绑定到 R2 桶的文件域名。

访问 https://img.example.com/adminLogin,用自己配置的管理员账号登录;管理页面为 /dashboard。账号密码不是上传令牌,也不是 R2 密钥。

作者实际网页图床后台

作者本地部署配置为前端静态资源启用了 SPA 回退,并优先让 /api/*、/upload、/upload/*、/file/* 等路径进入 Worker。若首页正常但 /dashboard 刷新 404,检查前端路由回退;若文件链接 404,检查 /file/* 是否进入正确的处理程序。不要靠反复刷新掩盖路由问题。

检查:登录后能看到管理后台;退出登录或在无痕窗口访问管理端,会要求认证。

04|后台启用 R2 渠道,再创建上传令牌

后台 R2 与令牌配置示意

进入图床后台 系统设置 → 上传设置,核对 R2 渠道已启用,选用它作为默认上传渠道。Worker 绑定的 img_r2 提供存储访问,客户端无需掌握这份底层存储凭据。渠道配置说明

再进入 系统设置 → 安全设置,确认管理端认证、用户端上传认证均已设置。找到 API Token 管理,创建一个给桌面端使用的令牌,例如 Windows 桌面上传,归属自己的用户,权限按用途选择,先给上传权限;需要同步云端列表时加 list,确实要清空回收站并永久删除云端文件时才加 delete。保存完整令牌,填入桌面工具。

三类凭据别混:Cloudflare 部署 Token负责部署;后台账号密码负责管理员登录;图床 API Token负责客户端上传。

本方案的文件通过 Worker /file/ 读取 R2,因此 R2 桶可以保持公共访问禁用。R2PublicUrl 或额外公开桶域名只在特定渠道功能需要时另配,不是本文图床入口,也不是看到 404 就必须打开的开关。

检查:先在网页端上传一张不敏感图片,复制返回的完整文件链接,在未登录窗口打开;同时确认未授权用户不能上传。

05|桌面选择“图床 API”,填地址和令牌

图床 API 连接设置,令牌字段留空

打开拾玖图床设置,选择 图床 API(CloudFlare-ImgBed):

字段 填写示例
图床地址 https://img.example.com
上传 API 令牌 刚才在图床后台创建的令牌

地址填站点根地址,不附加 /adminLogin、/dashboard 或 /file/。测试连接后保存。这里不选“Cloudflare R2 直连”,也不填写 S3 密钥。

兼容范围:作者的网页端包含与桌面工具配套的接口适配,例如容量统计接口。使用未经适配的上游站点时,上传可用不代表桌面容量、云端同步等功能也可用;遇到接口 404 应核对版本和接口,不能靠换管理员密码解决。本文没有提供私人部署代码的公共下载地址。

06|主窗口先预览,悬浮窗直接上传

图床 API 模式的桌面预览

拖入图片、PDF 或整个文件夹,工具会扫描子文件夹。勾选包含文件夹名后,文件名示例为 商品A_细节_侧面_时间戳.png。预览名称与缩略图,再点击确认并上传。

上传确认窗口

悬浮窗直接上传流程

主窗口拖入先生成预览,再点击确认上传;悬浮窗拖入会直接上传本次新增图片、PDF 或文件夹中的支持文件,跳过确认弹窗。不会顺带上传主窗口里原有的待上传文件。

成功后复制工具生成的 URL。中文可以显示为可读文字,但 #、% 等保留字符需要正确编码,勿手工把链接里的编码全部删掉。

07|网页管理与桌面历史配合使用

桌面历史记录演示

网页后台展示服务端管理的文件;桌面历史保存本机记录,两者数量不一定相同。在配套服务支持时,点击同步云端文件补齐列表,再按文件名关键词、上传日期筛选。选中多条复制链接,可以按行粘到表格。

“刷新选中链接”检查状态,不重新上传;网络超时不能直接认定文件丢失。清理本地失效记录也不等于删除云端对象。

08|移入回收站,确认清空才永久删除

本机回收站实际界面,演示文件

在上传历史中选中记录,点击“移入回收站”。打开“回收站”后,可选中文件点击“恢复选中”,保留原来的文件名、URL、上传日期、大小和缩略图。重启工具后回收站仍保留,手动同步云端不会把这些文件重新加回历史。

回收站仅保存在本机 data 目录,不跨电脑同步,也不会自动清空。移入时没有删除云端文件,因此仍占云端容量,原链接仍然有效;如果通过其他工具或网页后台删掉了文件,本机恢复记录不能恢复文件内容。

只有点击“清空回收站(永久删除)”并确认,才真正删除云端文件。失败项留在回收站显示原因。图床令牌需要 delete 权限;本地历史备份不能恢复已经永久删除的云端文件。

09|上传令牌不等于用量统计授权

仪表盘演示,非真实账单

上传使用图床 API Token;账户用量需要另行配置统计授权。授权成功后工具刷新仪表盘。A/B 操作数按工具的 UTC 自然月口径汇总;存储环是当前快照对照 10 GB,不是本月 GB-month 计费结果。

还要分别查看 Workers 和 KV 用量,不能只看 R2 就认定整套服务没有费用。Workers 价格|KV 价格

上线前,用三项结果验收

本文依据作者本地配置、代码和已有截图整理;本轮重新采集 v1.4.22 桌面演示截图并更新全部发布配图,没有重新部署服务或完成一遍线上上传验收;回收站清空逻辑使用模拟请求测试,没有删除作者真实云端文件。桌面 R2 直连是另一种用法,不属于本文主流程。

作者主站:blues19.com|资讯站:news.blues19.com

领取拾玖图床桌面工具

想用这款工具整理产品图片、批量上传并核对模板链接?

请在公众号文章评论区回复「我要领取图床工具」获取领取方式。

输入有效口令,领取桌面工具 · 关注公众号 / 联系作者进群

关于作者 · 一起学习 AI

你好,我是拾玖Blues。

我有 6 年亚马逊运营实战经验,在公众号「拾玖说跨境AI」分享自己的实践。我关注 AI 与自动化如何用于跨境运营、团队管理和新人培训,把实际遇到的问题整理成工具与操作方法。

欢迎关注公众号、添加我的微信,或扫描有效群二维码进群交流。进群后可以简单介绍一下自己,方便找到一起学习的伙伴。

自我介绍模板
大家好,我是:
目前从事的业务:
想学习的 AI 方向:
最想解决的一个问题:
期待和大家一起交流、提高效率。

模板只复制到剪贴板,由你自己发送;工具不会自动联系任何人。

查看公众号与作者个人二维码

拾玖说跨境AI

关注教程,联系作者进群

关注公众号看更新;添加拾玖 Blues 时备注「图床工具」,一起交流学习 AI。