{"id":13453328,"url":"https://github.com/MarSeventh/CloudFlare-ImgBed","last_synced_at":"2025-03-24T01:31:27.087Z","repository":{"id":249274013,"uuid":"831066597","full_name":"MarSeventh/CloudFlare-ImgBed","owner":"MarSeventh","description":"基于 CloudFlare Pages 的开源文件托管解决方案（图床/文件床/网盘）","archived":false,"fork":false,"pushed_at":"2025-03-18T05:08:34.000Z","size":201408,"stargazers_count":1669,"open_issues_count":13,"forks_count":1556,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-03-18T05:29:38.709Z","etag":null,"topics":["cloudflare-pages","cloudflare-r2","img","imgbed","netdisk","oss","s3","telegram-bot"],"latest_commit_sha":null,"homepage":"https://cfbed.1314883.xyz","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MarSeventh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-19T15:24:19.000Z","updated_at":"2025-03-18T05:08:38.000Z","dependencies_parsed_at":"2024-08-09T07:27:49.664Z","dependency_job_id":"8935e5d3-2e1a-43fe-b0e9-494278c7f102","html_url":"https://github.com/MarSeventh/CloudFlare-ImgBed","commit_stats":null,"previous_names":["marseventh/cloudflare-imgbed"],"tags_count":54,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarSeventh%2FCloudFlare-ImgBed","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarSeventh%2FCloudFlare-ImgBed/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarSeventh%2FCloudFlare-ImgBed/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarSeventh%2FCloudFlare-ImgBed/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MarSeventh","download_url":"https://codeload.github.com/MarSeventh/CloudFlare-ImgBed/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245194223,"owners_count":20575725,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloudflare-pages","cloudflare-r2","img","imgbed","netdisk","oss","s3","telegram-bot"],"created_at":"2024-07-31T08:00:38.161Z","updated_at":"2025-03-24T01:31:27.068Z","avatar_url":"https://github.com/MarSeventh.png","language":"JavaScript","funding_links":[],"categories":["HarmonyOS","JavaScript","图床","Bildhosting"],"sub_categories":["Windows Manager"],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003ca href=\"https://github.com/MarSeventh/CloudFlare-ImgBed\"\u003e\u003cimg width=\"80%\" alt=\"logo\" src=\"static/readme/banner.png\"/\u003e\u003c/a\u003e\n    \u003cp\u003e\u003cem\u003e🗂️开源文件托管解决方案，基于 Cloudflare Pages，支持 Telegram Bot 、 Cloudflare R2 ，S3 等多种存储渠道\u003c/em\u003e\u003c/p\u003e\n    \u003cdiv\u003e\n        \u003ca href=\"https://github.com/MarSeventh/CloudFlare-ImgBed/blob/main/LICENSE\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/license/MarSeventh/CloudFlare-ImgBed\" alt=\"License\" /\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://github.com/MarSeventh/CloudFlare-ImgBed/releases\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/release/MarSeventh/CloudFlare-ImgBed\" alt=\"latest version\" /\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://github.com/MarSeventh/CloudFlare-ImgBed/releases\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/downloads/MarSeventh/CloudFlare-ImgBed/total?color=%239F7AEA\u0026logo=github\" alt=\"Downloads\" /\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://github.com/MarSeventh/CloudFlare-ImgBed/issues\"\u003e\n          \u003cimg src=\"https://img.shields.io/github/issues/MarSeventh/CloudFlare-ImgBed\" alt=\"Issues\" /\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://github.com/MarSeventh/CloudFlare-ImgBed/stargazers\"\u003e\n          \u003cimg src=\"https://img.shields.io/github/stars/MarSeventh/CloudFlare-ImgBed\" alt=\"Stars\" /\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://github.com/MarSeventh/CloudFlare-ImgBed/network/members\"\u003e\n          \u003cimg src=\"https://img.shields.io/github/forks/MarSeventh/CloudFlare-ImgBed\" alt=\"Forks\" /\u003e\n        \u003c/a\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\n---\n\n\u003e [!IMPORTANT]\n\u003e\n\u003e **v2.0 版本升级注意事项请查看公告！**\n\n\u003cdetails\u003e\n    \u003csummary\u003e公告\u003c/summary\u003e\n\n\n\n## 置顶\n\n1. 部署使用出现问题，请先仔细查阅文档、常见问题解答以及已有issues。\n\n2. **前端仓库**：[MarSeventh/Sanyue-ImgHub](https://github.com/MarSeventh/Sanyue-ImgHub)\n\n3. **注意**：本仓库为[Telegraph-Image](https://github.com/cf-pages/Telegraph-Image)项目的重制版，如果你觉得本项目不错，在支持本项目的同时，也请支持原项目。\n\n## 2025.2.6  V2.0 版本升级注意事项\n\n\u003e v2.0 beta 版已发布，相较于 v1.0 版本进行了大量改动和优化，但 beta 版本可能存在潜在不稳定性，若您追求稳定，可选择暂缓更新。\n\u003e\n\u003e 由于**构建命令发生了变化**，此次更新需要您**手动进行**，请按照以下步骤进行操作：\n\u003e\n\u003e - 同步fork的仓库至最新版（若已自动同步可忽略）\n\u003e\n\u003e - 前往 pages 管理页面，进入`设置`-\u003e`构建`，编辑`构建配置`，在`构建命令`处填写`npm install`\n\u003e\n\u003e   ![image-20250212190315179](static/readme/202502121903327.png)\n\u003e\n\u003e - 新版本所有设置项已**迁移至 管理端-\u003e系统设置 界面**，原则上无需再通过环境变量的方式进行设置，通过系统设置界面进行的设置将**覆盖掉**环境变量中的设置，但为了保证 **Telegram渠道的图片** 能够与旧版本相兼容，**若您之前设置了 Telegram 渠道相关的环境变量，请将其保留！**\n\u003e\n\u003e - 确保上述设置完成无误后，前往 pages 管理页面，进入`部署`，对最后一次不成功的部署进行`重试操作`\n\n## 关于切换到 Telegram 渠道的通知\n\n\n\u003e 由于telegraph图床被滥用，该项目上传渠道已切换至Telegram Channel，请**更新至最新版（更新方式见第3.1章最后一节）**，按照文档中的部署要求**设置`TG_BOT_TOKEN`和`TG_CHAT_ID`**，否则将无法正常使用上传功能。\n\u003e\n\u003e 此外，目前**KV数据库为必须配置**，如果以前未配置请按照文档说明配置。\n\u003e\n\u003e 出现问题，请先查看第5节常见问题Q\u0026A部分。\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n    \u003csummary\u003e生态建设\u003c/summary\u003e\n\n\n\n## 1. 插件\n\n- **编辑器内自动上传（油猴脚本）**：https://greasyfork.org/zh-CN/scripts/529816-image-uploader-to-markdown-to-cloudflare-imgbed （_作者：Linux.do: [calg_c](https://linux.do/u/calg_c/summary)_）\n\n\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n    \u003csummary\u003e体验地址及优质博文、视频（搭建或使用有问题可以先去里面学习哦~）\u003c/summary\u003e\n\n\n**体验地址**：[CloudFlare ImgBed](https://cfbed.1314883.xyz/)\n\n\u003e 访问码：cfbed\n\n**体验视频**：[CloudFlare免费图床，轻松守护你的每一份精彩！_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1y3WGe4EGh/?vd_source=da5ecbe595e41089cd1bed95932b8bfd)\n\n**相关教程视频**：\n\n- [利用Cloudflare R2 +Pages搭建在线图床系统，不限空间，不被墙，超级简单，完全免费 (youtube.com)](https://www.youtube.com/watch?v=T8VayuUMOzM)\n\n**相关优质博文（感谢每一位鼎力支持的热心大佬）：**\n\n- [CloudFlare-ImgBed项目 – yunsen2025的小窝](https://www.yunsen2025.top/category/cloudflare-imgbed/)\n  - [完全免费，图文教程手把手教你使用cloudflare搭建一个无限空间的私人图床 支持身份认证与成人元素鉴定！ - yunsen2025的小窝](https://www.yunsen2025.top/blog-cfpages-syq-imgbed)\n  - [为CloudFlare-ImgBed图床配置国内CDN并分线路解析，以最低成本享受极致速度！ – yunsen2025的小窝](https://www.yunsen2025.top/cloudflare-imgbed-fen-xian-pei-zhi-guo-nei-cdn/)\n- [利用cloudflare pages搭建telegram频道图床 (lepidus.me)](https://blogstr.lepidus.me/post/1725801323700/)\n- [搭建基于CloudFlare和Telegram的免费图床教程 - 刘学馆 | Blog (sexy0769.com)](https://blog.sexy0769.com/skill/735.html)\n- [CloudFlare+Github，打造属于自己的免费图床 - 大头钉的小小blog (luckyting.top)](https://luckyting.top/index.php/archives/20/)\n\n\u003c/details\u003e\n\n\n\n## 最近更新\n\nAdd Features:\n\n- **目录功能上线啦（感谢[fantasy-ke](https://github.com/fantasy-ke)协助）**，当前支持：\n  - 上传到指定目录\n  - 整目录删除\n  - 文件位置移动（ Telegraph 和旧版 Telegram 渠道不支持移动）\n  - 按目录读取文件\n- 随机图API支持按目录读取，支持按目录进行权限控制\n- 上传用户管理支持显示IP具体位置\n\nFix Bugs:\n\n- 修复多项影响体验的bug\n\n\n\n\u003cdetails\u003e\n    \u003csummary\u003e更新日志\u003c/summary\u003e\n\n\n## 2025.3.14\n\nAdd Features:\n\n- 上传用户管理支持显示IP具体位置\n\n## 2025.3.8\n\nAdd Features:\n\n- 随机图API支持按目录读取，支持按目录进行权限控制\n\nFix Bugs:\n\n- 修复随机图API的缓存问题\n\n## 2025.3.7\n\nAdd Features:\n\n- **目录功能上线啦**，当前支持：\n  - 上传到指定目录\n  - 整目录删除\n  - 文件位置移动（ Telegraph 和旧版 Telegram 渠道不支持移动）\n  - 按目录读取文件\n- 随机图API支持按目录读取\n\nFix Bugs:\n\n- 修复多项影响体验的bug\n\n## 2025.3.1\n\nAdd Features:\n\n- 支持粘贴多个链接同时上传\n- 支持存储和管理外链\n\nFix Bugs:\n\n- 修复管理端复制 S3 链接的有关问题\n- 修复管理端部分页面设置不生效的问题\n- 修复渠道设置某些情况下不能保存的问题\n\n## 2025.2.6\n\n**v2.0版本焕新登场**，带来多项新功能和优化，给您焕然一新的用户体验：\n\n💪**更强大**：\n\n- 接入 S3 API 渠道，支持 Cloudflare R2 , Backblaze B2 ，七牛云，又拍云等多个服务商的对象存储服务\n- 支持设置多个 Telegram 和 S3 渠道，支持多渠道负载均衡\n- 上传文件支持短链接命名方式\n\n✈️**更高效**：\n\n- 全部设置项迁移到管理端系统设置界面，无需进行环境变量的繁琐配置，立即设置立即生效\n- 管理端 Gallery 和 用户管理 等页面实现分页读取，提升前端渲染速度，优化使用体验\n- 支持禁用、启用渠道，渠道管理自在掌握\n- 多个设置项加入提示弹窗，不用到处翻阅文档，设置更踏实\n\n✨**更精致**：\n\n- 全局支持深色模式，根据用户喜好和时间自动切换，凸显满满高级感\n- 登陆页面、图库页面、用户管理页面等多个页面细节重新打磨，操作更直观\n- 上传页全新 Tab 栏，一拉一合，灵动又便捷\n- Logo 焕新，纯手工打造，能力有限，不喜勿喷（\n- 支持自定义隐藏页脚，强迫症患者有救啦\n\n## 2024.12.27\n\nAdd Features:\n\n- 支持通过环境变量自定义全局默认链接前缀（见3.1.3.6自定义配置接口）\n- 管理端支持自定义链接前缀\n- 管理端部分页面展示效果优化\n- `/upload`API支持返回完整链接（请求时设置`returnFormat`参数，详见API文档）\n\nFix Bugs:\n\n- 优化上传页面显示效果\n\n## 2024.12.20\n\nAdd Features:\n\n- 管理端支持拉黑上传IP（Dashboard-\u003e用户管理-\u003e允许上传）\n- 管理端批量操作支持按照用户选择的顺序进行（[#issue124](https://github.com/MarSeventh/CloudFlare-ImgBed/issues/124)）\n- `random`接口优化，减少KV操作次数，增加`content`参数，支持返回指定类型的文件\n- 接入CloudFlare Cache API，提升 list 相关接口访问速度\n- 正常读取返回图片的CDN缓存时间从1年调整为7天，防止缓存清除不成功的情况下图片长时间内仍可以访问的问题\n\n## 2024.12.14\n\nAdd Features:\n\n- 管理端增加批量黑名单、白名单功能\n\n## 2024.12.13\n\nAdd Features:\n\n- 优化blockimg、whitelistmode、404等返回状态的缓存策略，尽可能减少回源请求(参考文档`3.1.3.9管理端删除、拉黑等操作优化`进行设置)\n\n## 2024.12.12\n\nAdd Features: \n\n- 后端支持上传失败自动切换其他渠道重试\n- 优化404、blockimg、whitelistmode等返回状态的显示样式\n\n## 2024.12.11\n\nAdd Features:\n\n- 进行删除、加入白名单、加入黑名单等操作时，自动清除CF CDN缓存，避免延迟生效(参考文档`3.1.3.9管理端删除、拉黑等操作优化`进行设置)\n\n## 2024.12.10\n\nAdd Features:\n\n- 文件详情增加文件大小记录\n\n## 2024.12.09\n\nAdd Features:\n\n- 开放更多文件格式\n\nFix Bugs:\n\n- 读取文件响应头增加允许跨域头`access-control-allow-origin: *`\n\n## 2024.12.04\n\nAdd Features:\n\n- 支持自定义命名方式（仅原名 or 仅随机前缀 or 默认的随机前缀_原名）\n- Telegram Channel渠道上传文件记录机器人和频道数据，便于迁移和备份\n- 支持自定义链接前缀\n\nFix Bugs:\n\n- R2渠道在管理端删除时，存储桶同步删除\n\n## 2024.11.05\n\nAdd Features:\n\n- 增加对R2 bucket的支持\n\n## 2024.10.20\n\nAdd Features:\n\n- 页脚增加自定义传送门功能\n\n## 2024.09.28\n\nAdd Features:\n\n- 上传页面右下角工具栏样式重构，支持上传页自定义压缩（上传前+存储端）\n- 增加仅删除上传成功图片、上传失败图片重试\n\n## 2024.09.27\n\nAdd Features:\n\n- 上传页面点击链接时，自动复制到剪切板\n- 上传设置记忆（上传方式、链接格式等）\n\nFix Bugs:\n\n- 若未设置密码，无需跳转登录页\n\n## 2024.09.26\n\nAdd Features:\n\n- 优化粘贴上传时的文件命名方法\n\n## 2024.09.12\n\nAdd Features:\n\n- 增加背景透明度支持自定义\n\n## 2024.09.11\n\nAdd Features:\n\n- 支持背景切换时间自定义\n\n## 2024.08.26\n\nAdd Features:\n\n- 支持大于5MB的图片上传前自动压缩\n- 图床名称和Logo支持自定义\n- 网站标题和Icon支持自定义\n\n## 2024.08.23\n\nAdd Features:\n\n- 支持URL粘贴上传\n\n## 2024.08.21\n\nAdd Features:\n\n- 完善多格式链接展示形式，增加UBB格式链接支持\n- 完善登录逻辑，后端增加认证码校验接口\n\n## 2024.07.25\n\nAdd Features:\n\n- 增加随机图API\n\nFix Bugs:\n\n- 修复API上传无法直接展示在后台的问题\n\n## 2024.07.22\n\nAdd Features:\n\n- 增加粘贴图片上传功能\n\n## 2024.07.21\n\nAdd Features:\n\n- 增加Markdown、HTML等格式链接复制功能\n- 上传页面增加管理端入口\n\n\u003c/details\u003e\n\n# 1.Introduction\n\n免费文件托管解决方案，具有**上传**、**管理**、**读取**、**删除**等全链路功能，覆盖文件全生命周期，支持**鉴权**、**目录**、**图片审查**、**随机图**等各项特性。\n\n![CloudFlare](static/readme/海报.png)\n\n# 2.Features\n\n\u003cdetails\u003e\n    \u003csummary\u003e项目特性\u003c/summary\u003e\n\n- **开源**\n  \n  - 前端开源（可自行修改、打包使用）\n  \n- **炫酷的动效（**\n  \n  - 流畅丝滑的过渡动画~\n  - 上传文件实现呼吸灯效果\n  - 灵动的操作体验\n  \n- **人性化上传**\n  \n  - **覆盖大多数文件格式**：支持绝大多数常见**图片、视频、动图**等，同时也支持其他大多数格式的文件\n  \n  - **支持多种存储渠道**：支持 **Telegram Bot**, **Cloudflare R2**, **S3**  等多种存储渠道一键切换\n  \n    \u003e Telegram Bot渠道：上传文件大小限制为20MB，提供客户端和服务端压缩功能\n    \u003e\n    \u003e Cloudflare R2渠道：上传大小不限，但超过免费额度会扣费，详见[Pricing | Cloudflare R2 docs](https://developers.cloudflare.com/r2/pricing/)\n    \u003e\n    \u003e ![](static/readme/202411052346701.png)\n  \n  - **上传方式多样**：支持多种上传方式（**拖拽点击、粘贴**）（Web/API)\n  \n    \u003e 1. 粘贴上传支持**文件**和**URL**\n    \u003e 2. 支持批量上传（不限同时选择文件数量，但为了保证稳定性，同时处于上传状态的文件最多为10个）\n    \u003e 3. 上传显示实时上传进度\n    \u003e 4. Web和API端上传图片，均可直接展示在管理页面中\n    \u003e 5. 过大图片在前端进行压缩，提升上传稳定性和加载性能;支持自定义压缩质量，自定义开启前后端压缩功能\n    \n  - **支持指定上传目录**\n  \n- **多样化复制**\n\n  - 支持**整体复制**和**单独复制**（整体复制即将所有链接通过换行串联起来后复制）\n\n    \u003e 1. 支持**MarkDown、HTML、BBCode和原始链接**四种格式复制\n    \u003e 2. 上传完成后直观展示四种格式链接\n\n  - 支持设置**自定义链接前缀**，便于接入三方CDN服务\n\n- **支持身份认证、防滥用**\n  - 支持Web和API**上传认证**（感谢[hl128k](https://github.com/hl128k)）\n  - 支持访问域名限制（感谢[hl128k](https://github.com/hl128k)）\n  - 支持上传IP统计，支持禁止指定IP上传\n  \n- **支持页面自定义**\n  - **背景自定义**\n  \n    \u003e 1. 页面背景支持**单图**、**自定义多图轮播**、**bing随机图轮播**等多种模式\n    \u003e 2. 背景透明度、切换时间支持自定义\n  \n  - **网站信息自定义**\n  \n    \u003e 1. 自定义图床名称和Logo\n    \u003e 2. 自定义网站标题和Icon\n    \u003e 3. 页脚传送门自定义\n    \u003e 4. 支持页脚隐藏\n  \n- **一些小功能**\n  - 支持**随机图**API，从图床中随机返回一张图片\n\n- **以及原版所有特性**\n\n  \u003e 1.**无限图片储存数量**，你可以上传不限数量的图片\n  \u003e\n  \u003e 2.无需购买服务器，托管于 Cloudflare 的网络上，当使用量不超过 Cloudflare 的免费额度时，完全免费\n  \u003e\n  \u003e 3.无需购买域名，可以使用 Cloudflare Pages 提供的`*.pages.dev`的免费二级域名，同时也支持绑定自定义域名\n  \u003e\n  \u003e 4.支持**图片审查** API，可根据需要开启，开启后不良图片将自动屏蔽，不再加载\n  \u003e\n  \u003e 5.支持**后台图片管理**，可以对上传的图片进行在线预览，添加白名单，黑名单等操作\n\n\u003c/details\u003e\n\n\n# 3.Deployment\n\n## 3.1部署使用\n\n**注意修改完环境变量，重新部署才能生效**，见[3.1章最后一节](#3.1.4其他操作指南)；**版本更新方式**，也请见[3.1章最后一节](#3.1.4其他操作指南)\n\n\u003cdetails\u003e\n    \u003csummary\u003e详细部署教程\u003c/summary\u003e\n\n\n### 3.1.1前期准备\n\n\u003cdetails\u003e\n    \u003csummary\u003e根据所需开通的渠道进行以下准备\u003c/summary\u003e\n\n\n\n- 开通**Telegram Bot渠道**：**Telegram的`TG_BOT_TOKEN`和`TG_CHAT_ID`**\n\n  \u003cdetails\u003e\n      \u003csummary\u003eTG_BOT_TOKEN和TG_CHAT_ID的获取方式\u003c/summary\u003e\n\n\n  首先需要拥有一个Telegram账户，然后按照以下步骤获取`TG_BOT_TOKEN`和`TG_CHAT_ID`。\n\n  1. 向[@BotFather](https://t.me/BotFather)发送`/newbot`，按照提示输入bot的备注、用户名等信息。成功创建后获得`TG_BOT_TOKEN`。\n\n     \u003cimg src=\"static/readme/202409071744569.png\" style=\"width: 50%;\" /\u003e\n\n  2. 创建一个新的频道（Channel），进入新建的频道，选择频道管理，将刚才创建的机器人设为频道管理员。\n\n     \u003cimg src=\"static/readme/202409071758534.png\" style=\"display:inline-block; width:33%\"/\u003e\u003cimg src=\"static/readme/202409071758796.png\" style=\"display:inline-block; width:32%\"/\u003e\u003cimg src=\"static/readme/202410291531473.png\" style=\"width:33%;display: inline-block\" /\u003e\n\n  3. 向[@VersaToolsBot](https://t.me/VersaToolsBot)**转发**一条第2步新建频道中的消息，获取`TG_CHAT_ID`（频道ID）\n\n     \u003cimg src=\"static/readme/202409071751619.png\" style=\"width: 67%;\" /\u003e\n\n  \u003c/details\u003e\n\n- 开通**Cloudflare R2渠道**：新建一个Cloudflare R2存储桶，前提是需要绑定支付方式。\n\n  \u003cdetails\u003e\n      \u003csummary\u003eCloudflare R2渠道开通方式\u003c/summary\u003e\n  \n  \n  1. 前往Cloudflare Dashboard，选择`R2 存储对象`\n  \n     ![](static/readme/202411052318204.png)\n  \n  2. 选择`创建存储桶`，名称随意，填完后点击`创建存储桶`即可完成创建\n  \n     ![](static/readme/202411052319402.png)\n  \n  3. 根据需求可选操作：如果**需要启用图像审查，需要开启存储桶的公网访问权限**，有两种开启方式，详见下图。无论你选择哪种方式，都需要记下完整的公网访问链接，格式为`https://xxxx.xxx`\n  \n     ![image-20241105232759131](static/readme/202411052327191.png)\n  \n  \u003c/details\u003e\n  \n- **S3** API渠道：在服务提供商处，准备`S3_ACCESS_KEY_ID`、`S3_SECRET_ACCESS_KEY`、`S3_BUCKET_NAME`、`S3_ENDPOINT`等必须参数。（常见服务提供商密钥获取教程参见：[CloudFlare-ImgBed常用S3存储配置教程 – yunsen2025的小窝](https://www.yunsen2025.top/cloudflare-imgbed-s3-she-zhi/)）\n\n\u003c/details\u003e\n\n---\n\n### 3.1.2部署教程\n\n\u003cdetails\u003e\n    \u003csummary\u003e根据自己需求部署在CloudFlare或服务器上\u003c/summary\u003e\n\n\n#### 3.1.2.1部署于Cloudflare\n\n需准备一个**Cloudflare账户**，然后按照以下步骤即可完成部署。\n\n\u003cdetails\u003e\n    \u003csummary\u003ev2.0版本 部署在Cloudflare上的方式\u003c/summary\u003e\n\n​    按照以下步骤部署图床在 CloudFlare Pages 上。\n\n1. Fork 本仓库\n\n2. 打开 Cloudflare Dashboard，进入 Pages 管理页面，选择创建项目，选择`连接到 Git 提供程序`\n\n   ![image-20250206153541017](static/readme/202502061535204.png)\n\n3. 按照页面提示输入项目名称，选择需要连接的 git 仓库，点击`开始设置`\n\n4. 填写`项目名称`，构建命令填写`npm install`，点击`保存并部署`\n\n   ![image-20250206182329361](static/readme/202502061823616.png)\n\n5. **绑定KV数据库**：\n\n   - 创建一个新的KV数据库\n\n     \u003e ![](static/readme/202408261035367.png)\n     \u003e\n     \u003e ![](static/readme/202408261037971.png)\n\n   - 进入项目对应`设置`-\u003e`绑定`-\u003e`添加`-\u003e`KV 命名空间`-\u003e`变量名称`，填写`img_url`，`KV命名空间`选择刚才创建好的KV数据库\n\n6. **重试部署**：前往项目管理界面-\u003e`部署`-\u003e`最新一次部署后面的···`-\u003e`重试部署`\n\n7. 根据**所需存储渠道**进行相关设置：\n\n   - `Cloudflare R2`渠道：\n\n     将前面新建的存储桶绑定到项目（和KV绑定地方一样），**名称**为`img_r2`\n\n     \u003e ![](static/readme/202411052323183.png)\n\n     若要启用 R2 渠道的图像审查，请进入 项目管理页面-\u003e系统设置-\u003e上传设置 处设置 R2 的公开访问链接，值为前面记下的**R2存储桶公网访问链接**\n\n   - `其他渠道`：进入项目管理页面`https://你的域名/systemConfig#upload`，按照页面提示将3.1中获取的渠道参数填写到对应渠道中，保存设置即可\n\n\u003c/details\u003e\n\n\n\n\u003cdetails\u003e\n    \u003csummary\u003e（已过时）v1.0版本 部署在Cloudflare上的方式\u003c/summary\u003e\n\n\n\n\n依托于CF的强大能力，只需简单几步，即可部署本项目，拥有自己的图床。\n\n1. Fork 本仓库\n\n2. 打开 Cloudflare Dashboard，进入 Pages 管理页面，选择创建项目，选择`连接到 Git 提供程序`\n\n   \u003e ![](static/readme/202407201047300.png)\n\n3. 按照页面提示输入项目名称，选择需要连接的 git 仓库，点击`部署站点`\n\n4. 根据**所需存储渠道**进行相关设置：\n\n   - `Telegram 渠道`：将3.1.1中获取的`TG_BOT_TOKEN`和`TG_CHAT_ID`分别添加到环境变量中，对应**环境变量名为`TG_BOT_TOKEN`和`TG_CHAT_ID`**\n\n   - `Cloudflare R2 渠道`：\n\n     - 将前面新建的存储桶绑定到项目，名称为`img_r2`\n     \n       \u003e ![](static/readme/202411052323183.png)\n     \n     - 如果后续要开启**图像审查**，需要设置`R2PublicUrl`环境变量，值为前面记下的**R2存储桶公网访问链接**：\n     \n       \u003e ![](static/readme/202411052330663.png)\n     \n   - `S3 渠道`：将前面准备好的`S3_ACCESS_KEY_ID`、`S3_SECRET_ACCESS_KEY`、`S3_BUCKET_NAME`、`S3_ENDPOINT`及其对应值填入环境变量。\n\n3. **绑定KV数据库**：\n\n   - 创建一个新的KV数据库\n\n     \u003e ![](static/readme/202408261035367.png)\n     \u003e\n     \u003e ![](static/readme/202408261037971.png)\n\n   - 进入项目对应`设置`-\u003e`函数`-\u003e`KV 命名空间绑定`-\u003e`编辑绑定`-\u003e`变量名称`，填写`img_url`，KV命名空间选择刚才创建好的KV数据库\n\n3. `重试部署`，此时项目即可正常使用\n\n\u003c/details\u003e\n\n#### 3.1.2.2部署于服务器\n\n如果Cloudflare的**有限访问次数**不能满足你的需求，并且你拥有自己的服务器，可以参照[3.1.2.2节](#3.1.2.2部署于服务器)的教程在服务器上模拟Cloudflare的环境，并开放对应的端口访问服务。\n\n注意由于服务器操作系统、硬件版本复杂多样，相关教程**无法确保适合每一位用户**，遇到报错请尽量利用搜索引擎解决，无法解决也可以提issue寻求帮助。\n\n\u003cdetails\u003e\n    \u003csummary\u003ev2.0 部署在服务器上的方式\u003c/summary\u003e\n\n\n\n1. 安装服务器操作系统对应的`node.js`，经测试`v22.5.1`版本可以正常使用。（安装教程自行search）\n\n2. 切换到项目根目录，运行`npm install`，安装所需依赖。\n\n3. 在项目根目录下新建`wrangler.toml`配置文件，其内容为项目名称，环境变量等。（详情参见官方文档[Configuration - Wrangler (cloudflare.com)](https://developers.cloudflare.com/workers/wrangler/configuration/)）\n\n   \u003e 配置文件样例：\n   \u003e\n   \u003e ```toml\n   \u003e name = \"cloudflare-imgbed\"\n   \u003e compatibility_date = \"2024-07-24\"\n   \u003e ```\n\n4. 在项目根目录下运行`npm run start`，至此，正常情况下项目已经成功部署。项目默认支持通过服务器**本地模拟的R2存储上传**，可通过**管理端系统设置页面**进行其他设置。\n\n   程序默认运行在`8080`端口上，使用`nginx`等服务器反代`127.0.0.1:8080`即可外网访问服务。如需修改端口，可在`package.json`中修改`start`脚本的`port`参数（如下）。\n\n   ```toml\n   \"scripts\": {\n       \"ci-test\": \"concurrently --kill-others \\\"npm start\\\" \\\"wait-on http://localhost:8080 \u0026\u0026 mocha\\\"\",\n       \"test\": \"mocha\",\n       \"start\": \"npx wrangler pages dev ./ --kv \\\"img_url\\\" --r2 \\\"img_r2\\\" --port 8080 --persist-to ./data\"\n     }\n   ```\n\n   正常启动，控制台输出如下：\n\n   ![202408191829163](static/readme/202408191855625.png)\n\n\u003c/details\u003e\n\n\n\n\u003cdetails\u003e\n    \u003csummary\u003e（已过时）v1.0 部署在服务器上的方式\u003c/summary\u003e\n\n\n\n\n1. 安装服务器操作系统对应的`node.js`，经测试`v22.5.1`版本可以正常使用。（安装教程自行search）\n\n2. 切换到项目根目录，运行`npm install`，安装所需依赖。\n\n3. 在项目根目录下新建`wrangler.toml`配置文件，其内容为项目名称，环境变量（**包括`TG_BOT_TOKEN`和`TG_CHAT_ID`等参数**）等，可根据后文环境变量配置进行个性化修改。（详情参见官方文档[Configuration - Wrangler (cloudflare.com)](https://developers.cloudflare.com/workers/wrangler/configuration/)）\n\n   \u003e 配置文件样例：\n   \u003e\n   \u003e ```toml\n   \u003e name = \"cloudflare-imgbed\"\n   \u003e compatibility_date = \"2024-07-24\"\n   \u003e \n   \u003e [vars]\n   \u003e ModerateContentApiKey = \"your_key\"\n   \u003e AllowRandom = \"true\"\n   \u003e BASIC_USER = \"user\"\n   \u003e BASIC_PASS = \"pass\"\n   \u003e TG_BOT_TOKEN = \"your_bot_token\"\n   \u003e TG_CHAT_ID = \"your_bot_id\"\n   \u003e ```\n\n4. 在项目根目录下运行`npm run start`，至此，正常情况下项目已经成功部署。项目默认支持通过服务器**本地模拟的R2存储上传**。\n\n   程序默认运行在`8080`端口上，使用`nginx`等服务器反代`127.0.0.1:8080`即可外网访问服务。如需修改端口，可在`package.json`中修改`start`脚本的`port`参数（如下）。\n\n   ```toml\n   \"scripts\": {\n       \"ci-test\": \"concurrently --kill-others \\\"npm start\\\" \\\"wait-on http://localhost:8080 \u0026\u0026 mocha\\\"\",\n       \"test\": \"mocha\",\n       \"start\": \"npx wrangler pages dev ./ --kv \\\"img_url\\\" --r2 \\\"img_r2\\\" --port 8080 --persist-to ./data\"\n     }\n   ```\n\n   正常启动，控制台输出如下：\n\n   ![202408191829163](static/readme/202408191855625.png)\n   \n   \u003c/details\u003e\n\n\u003c/details\u003e\n\n---\n\n### 3.1.3可选配置\n\n\u003cdetails\u003e\n    \u003csummary\u003ev2.0 后台认证、自定义页面、缓存清除等设置\u003c/summary\u003e\n\n​    \n\n请前往 管理端-\u003e系统设置 界面，按照提示进行设置，如果有不清楚的设置项，可参考下方v1.0版本的设置介绍内容。\n\n\u003c/details\u003e\n\n\n\n\u003cdetails\u003e\n    \u003csummary\u003e（已过时，可参考部分设置项的具体介绍）v1.0 后台认证、自定义页面、缓存清除等设置\u003c/summary\u003e\n\n\n\n\n#### 3.1.3.1后台管理认证\n\n\n后台管理页面默认**不设密码**，需按照如下方式**设置认证**：\n\n1. **配置管理员认证**：\n   - 项目对应`设置`-\u003e`环境变量`-\u003e`为生产环境定义变量`-\u003e`编辑变量` ，添加`BASIC_USER`作为管理员用户名，`BASIC_PASS`作为管理员登录密码\n\n2. **重新部署项目**：\n\n   - 进入项目对应`部署`-\u003e`所有部署`，选择最新的一个，点击后面更多按钮（`···`），选择`重试部署`\n\n   - 部署完成后，访问`http(s)://你的域名/dashboard`即可进入后台管理页面\n\n#### 3.1.3.2图片审查\n\n\n支持成人内容审查和自动屏蔽，开启步骤如下：\n\n- 前往https://moderatecontent.com/ 注册并获得一个免费的用于审查图像内容的 API key\n- 打开 Cloudflare Pages 项目的管理页面，依次点击`设置`，`环境变量`，`添加环境变量`\n- 添加一个`变量名称`为`ModerateContentApiKey`，`值`为第一步获得的`API key`，点击`保存`即可\n\n#### 3.1.3.3Web和API上传认证\n\n\n环境变量增加认证码`AUTH_CODE`，值为你想要设置的认证码。\n\nWeb端在登录页面输入你的**认证码**即可登录使用；API端需要在上传链接中后缀`authCode`参数，详见[API文档](#4.2.1上传API)。\n\n#### 3.1.3.4访问域名限制\n\n环境变量增加`ALLOWED_DOMAINS`，多个允许的域名用英文`,`分割，如：`域名.xyz,域名.cloudns.be,域名.pp.ua`\n\n#### 3.1.3.5白名单模式\n\n环境变量增加`WhiteList_Mode`，设置为`true`即可开启白名单模式，仅设置为白名单的图片可被访问。\n\n#### 3.1.3.6自定义配置接口\n\n\u003cdetails\u003e\n    \u003csummary\u003e设置方式\u003c/summary\u003e\n\n环境变量增加`USER_CONFIG`，JSON格式（设置时类型选`text`即可），具体字段用途及内容规范见下表。\n\n| 字段名        | 用途                 | 类型          | 内容规范                                                     |\n| ------------- | -------------------- | ------------- | ------------------------------------------------------------ |\n| loginBkImg    | 自定义登录页面背景   | 列表/字符串   | 1、当字段类型为`列表`时，列表中元素为需要添加到轮播列表中的图片链接（列表中只有一张图时即为固定背景），形如`[\"1.jpg\",\"2.jpg\"]`\u003cbr /\u003e2、当字段类型为`字符串`时，目前**仅支持**字符串值为`bing`，设置为该值时启用bing随机图片轮播模式。 |\n| uploadBkImg   | 自定义上传页面背景   | 列表/字符串   | 同上                                                         |\n| bkInterval    | 轮播背景切换时间间隔 | 正整数        | 设置为背景图的轮播时间，默认`3000`，单位`ms`。\u003cbr /\u003e例如你希望10s切换一次，设置为`10000`即可。 |\n| bkOpacity     | 背景图透明度         | (0,1]的浮点数 | 展示的背景图透明度，默认为`1`。\u003cbr /\u003e如果你觉得显示效果不佳，可以自定义，如`0.8` |\n| ownerName     | 页内图床名称         | 字符串        | 只支持`字符串`类型，设置为你自定义的图床名称（默认为`Sanyue`） |\n| logoUrl       | 页内图床Logo         | 字符串        | 只支持`字符串`类型，设置为你自定义的图床Logo链接             |\n| siteTitle     | 网站标题             | 字符串        | 只支持`字符串`类型，设置为你自定义的网站标题                 |\n| siteIcon      | 网站图标             | 字符串        | 只支持`字符串`类型，设置为你自定义的网站图标链接             |\n| footerLink    | 页脚传送门链接       | 字符串        | 只支持`字符串`类型，设置为你自定义的传送地址（如个人博客链接） |\n| disableFooter | 禁用页脚             | boolean       | 支持`boolean`类型，设为`true`时禁用页脚，默认`false`         |\n| urlPrefix     | 全局默认链接前缀     | 字符串        | 只支持`字符串`类型，设置为自定义的全局默认链接前缀，该前缀会覆盖原始默认前缀，但不会覆盖用户自定义的链接前缀 |\n\n\u003e 整体示例：\n\u003e\n\u003e ```json\n\u003e 轮播模式：\n\u003e {\n\u003e \"uploadBkImg\": [\"https://imgbed.sanyue.site/file/6910f0b5e65ed462c1362.jpg\",\"https://imgbed.sanyue.site/file/a73c97a1e8149114dc750.jpg\"],\n\u003e \"loginBkImg\":[\"https://imgbed.sanyue.site/file/ef803977f35a4ef4c03c2.jpg\",\"https://imgbed.sanyue.site/file/0dbd5add3605a0b2e8994.jpg\"],\n\u003e \"ownerName\": \"Sanyue\",\n\u003e \"logoUrl\": \"https://demo-cloudflare-imgbed.pages.dev/random?type=img\"\n\u003e }\n\u003e bing随机图模式：\n\u003e {\n\u003e \"uploadBkImg\": \"bing\",\n\u003e \"loginBkImg\": \"bing\"\n\u003e }\n\u003e ```\n\n\u003c/details\u003e\n\n#### 3.1.3.7远端遥测\n\n便于开发者进行bug的捕捉和定位，但是**过程中可能收集到访问链接、域名等信息**，如您不愿意泄露类似信息给项目开发者，可在环境变量中添加`disable_telemetry`为`true`来退出遥测。\n\n#### 3.1.3.8随机图API\n\n设置`AllowRandom`环境变量，值为`true`，以从图床中随机获取一张图片，详见[API文档](#4.2.2随机图API)。\n\n#### 3.1.3.9管理端删除、拉黑等操作优化（缓存删除）\n\n正常情况下，因为CloudFlare CDN缓存的存在，在管理端进行删除、拉黑、加白名单等操作不会立即生效，需要等到缓存过期才能生效。\n\n**为了让操作立即生效**，请添加`CF_ZONE_ID`、`CF_EMAIL`、`CF_API_KEY`环境变量，获取方式如下：\n\n\u003cdetails\u003e\n    \u003csummary\u003e操作详情\u003c/summary\u003e\n\n`CF_ZONE_ID`:\n\n![image-20241211123633692](static/readme/20241211123633692.png)\n\n`CF_EMAIL`:即登录CloudFlare账号的邮箱\n\n`CF_API_KEY`:\n\n![image-20241211140019607](static/readme/202412111400766.png)\n\n\u003c/details\u003e\n\n##### \u003c/details\u003e\n\n---\n\n### 3.1.4其他操作指南\n\n\u003cdetails\u003e\n    \u003csummary\u003e环境变量修改、程序更新等教程\u003c/summary\u003e\n\n1. **修改环境变量方式**：\n\n\n![](static/readme/202408261040233.png)\n\n**修改环境变量后需要重新部署才能生效！**\n\n![](static/readme/202408261041507.png)\n\n2. **程序更新方式**：\n\n\n去到 Github 你之前 fork 过的仓库依次选择`Sync fork`-\u003e`Update branch`即可，稍等一会，Cloudflare Pages 检测到仓库更新之后便会自动部署最新代码。\n\n如果有新的环境变量需要添加，请根据文档要求进行添加，然后重试部署。\n\n![](static/readme/202409161736365.png)\n\n\u003c/details\u003e\n\n\u003c/details\u003e\n\n## 3.2定制化修改\n\n按照`3.1`步骤部署完成后，前往仓库[MarSeventh/Sanyue-ImgHub](https://github.com/MarSeventh/Sanyue-ImgHub?tab=readme-ov-file)，按照操作说明进行DIY和打包操作，最后将打包好的`/dist`目录中的内容替换到该仓库的根目录下即可（复制+替换）。\n\n# 4.Usage\n\n## 4.1Web端使用\n\n![image-20250313204101984](static/readme/202503132041511.png)\n\n![image-20250313204138886](static/readme/202503132041072.png)\n\n![image-20250313204308225](static/readme/202503132043466.png)\n\n![image-20250314152355339](static/readme/202503141524797.png)\n\n![image-20250313204325002](static/readme/202503132043265.png)\n\n## 4.2API文档\n\n\u003cdetails\u003e\n    \u003csummary\u003eAPI文档\u003c/summary\u003e\n\n### 4.2.1上传API\n\n| 接口名称     | /upload                                                      |\n| ------------ | ------------------------------------------------------------ |\n| **接口功能** | 上传图片或视频                                               |\n| **请求方法** | POST                                                         |\n| **请求参数** | **Query参数**：\u003cbr /\u003e`authCode`: string类型，即为你设置的认证码\u003cbr /\u003e`serverCompress`: boolean类型，表示是否开启服务端压缩（仅针对图片文件、Telegram上传渠道生效，默认为`true`）\u003cbr /\u003e`uploadChannel`: string类型，取值为`telegram`和`cfr2`，分别代表telegram bot渠道和Cloudflare R2渠道，默认为`telegram` 渠道\u003cbr /\u003e`autoRetry`: boolean类型，表示是否开启上传失败自动切换渠道重试，默认开启\u003cbr /\u003e`uploadNameType`: string类型，表示文件命名方式，可选值为`[default, index, origin, short]`，分别代表默认`前缀_原名`命名、`仅前缀`命名、`仅原名`命名和`短链接`命名法，默认为`default`\u003cbr /\u003e`returnFormat`:string类型，表示返回链接格式，可选值为`[default, full]`，分别代表默认的`/file/id`格式、完整链接格式\u003cbr /\u003e`uploadFolder`:string类型，指定上传目录，用相对路径表示，例如上传到img/test目录需填`img/test`\u003cbr /\u003e**Body参数(application/form-data)**：\u003cbr /\u003e`file`: file类型，你要上传的文件 |\n| **返回响应** | `data[0].src`为获得的图片链接（注意不包含域名，需要自己添加） |\n\n\u003e **请求示例**：\n\u003e\n\u003e ```bash\n\u003e curl --location --request POST 'https://your.domain/upload?authCode=your_authCode' \\\n\u003e \n\u003e --header 'User-Agent: Apifox/1.0.0 (https://apifox.com)' \\\n\u003e \n\u003e --form 'file=@\"D:\\\\杂文件\\\\壁纸\\\\genshin109.jpg\"'\n\u003e ```\n\u003e\n\u003e **响应示例**：\n\u003e\n\u003e ```json\n\u003e [\n\u003e  {\n\u003e      \"src\": \"/file/738a8aaacf4d88d1590f9.jpg\"\n\u003e  }\n\u003e ]\n\u003e ```\n\n### 4.2.2随机图API\n\n\n| 接口名称     | /random                                                      |\n| ------------ | ------------------------------------------------------------ |\n| **接口功能** | 从图床中随机返回一张图片的链接（注意会消耗列出次数）         |\n| **前置条件** | 设置`AllowRandom`环境变量，值为`true`                        |\n| **请求方法** | GET                                                          |\n| **请求参数** | **Query参数**：\u003cbr /\u003e`content`:返回的文件类型，可选值有`[image, video]`，多个使用`,`分隔，默认为`image`\u003cbr /\u003e`type`: 设为`img`时直接返回图片（此时form不生效）；设为`url`时返回完整url链接；默认返回随机图的文件路径。\u003cbr /\u003e`form`: 设为`text`时直接返回文本，默认返回json格式内容。\u003cbr /\u003e`dir`: 读取目录，使用相对路径，例如`img/test`会返回该目录以及所有子目录下的文件。 |\n| **响应格式** | 1、当`type`为`img`时：\u003cbr /\u003e返回格式为`image/jpeg`\u003cbr /\u003e2、当`type`为其他值时：\u003cbr /\u003e当`form`不是`text`时，返回JSON格式内容，`data.url`为返回的链接/文件路径。\u003cbr /\u003e否则，直接返回链接/文件路径。 |\n\n\u003e **请求示例**：\n\u003e\n\u003e ```bash\n\u003e curl --location --request GET 'https://your.domain/random' \\\n\u003e --header 'User-Agent: Apifox/1.0.0 (https://apifox.com)'\n\u003e ```\n\u003e\n\u003e **响应示例**：\n\u003e\n\u003e ```json\n\u003e {\n\u003e  \"url\": \"/file/4fab4d423d039b4665a27.jpg\"\n\u003e }\n\u003e ```\n\n\u003c/details\u003e\n\n# 5.TODO\n\n## 5.1Add Features💕\n\n\u003cdetails\u003e\n    \u003csummary\u003e功能更新列表\u003c/summary\u003e\n\n\n1. :white_check_mark: ~~增加粘贴图片上传功能~~（2024.7.22已完成）\n2. :white_check_mark:~~增加markdown、html等格式链接复制功能~~（2024.7.21已完成）\n3. :white_check_mark:~~上传页面增加管理端入口~~（2024.7.21已完成）\n4. :memo:增加用户个性化配置接口\n   - ~~登录页面和上传页面背景图自定义~~（2024.8.25已完成）\n   - ~~图床名称和Logo自定义~~（2024.8.26已完成）\n   - ~~网站标题和Icon自定义~~（2024.8.26已完成）\n   - ~~背景切换时间自定义~~（2024.9.11已完成）\n   - ~~背景透明度支持自定义~~（2024.9.12已完成）\n   - ~~页脚自定义传送门~~（2024.10.20已完成）\n   - ~~全局自定义链接前缀~~（2024.12.27已完成）\n   - ~~可隐藏页脚~~（2025.2.4已完成）\n5. :white_check_mark:~~增加随机图API~~（2024.7.25已完成）\n6. :white_check_mark:~~完善多格式链接展示形式，增加ubb格式链接支持~~（2024.8.21已完成）\n7. :white_check_mark:~~完善登录逻辑，后端增加认证码校验接口~~（2024.8.21已完成）\n8. :white_check_mark:~~支持URL粘贴上传~~（2024.8.23已完成）\n9. :white_check_mark:~~支持大于5MB的图片上传前自动压缩~~（2024.8.26已完成）\n10. :white_check_mark:~~上传页面右下角工具栏样式重构，支持上传页自定义压缩（上传前+存储端）~~（2024.9.28已完成）\n11. :white_check_mark:~~重构管理端，认证+显示效果优化，增加图片详情页~~（2024.12.20已完成）\n12. :white_check_mark:~~管理端增加访问量统计，IP记录、IP黑名单、上传IP黑名单等~~（2024.12.20已支持上传ip黑名单，访问记录由于对KV读写消耗太大，暂时搁置）\n13. :white_check_mark:~~上传页面点击链接，自动复制到剪切板~~(2024.9.27已完成)\n14. :white_check_mark:~~上传设置记忆（上传方式、链接格式等）~~（2024.9.27已完成，**两种上传方式合并**）\n15. :white_check_mark:~~若未设置密码，无需跳转进入登录页~~（2024.9.27已完成）\n16. :white_check_mark:~~增加仅删除上传成功图片、上传失败图片重试~~（2024.9.28已完成）\n17. :white_check_mark:~~优化粘贴上传时文件命名方法~~（2024.9.26已完成）\n18. :white_check_mark:~~增加对R2 bucket的支持~~（2024.11.5已完成）\n19. :white_check_mark:~~管理端增加批量黑名单、白名单功能~~（2024.12.14已完成）\n20. :white_check_mark:~~Telegram Channel渠道上传文件记录机器人和频道数据，便于迁移和备份~~（2024.12.4已完成）\n21. :white_check_mark:~~支持自定义命名方式（仅原名 or 仅随机前缀 or 默认的随机前缀\\_原名）~~（2024.12.4已完成）\n22. :white_check_mark:~~支持上传失败自动切换其他渠道尝试~~（2024.12.12已完成）\n23. :white_check_mark:~~后端list接口实现分页功能~~（2024.2.5已完成）\n24. :white_check_mark:~~支持自定义链接前缀~~（2024.12.4已完成）\n25. :memo:对接alist，或实现webdav（评估中）\n26. :white_check_mark:~~文件详情增加文件大小记录~~（2024.12.10已完成）\n27. :white_check_mark:~~支持管理员自定义全局默认链接前缀~~（2025.2.1已完成）\n28. :white_check_mark:~~开放更多文件格式~~（2024.12.9已完成）\n29. :white_check_mark:~~进行删除、加入白名单、加入黑名单等操作时，自动清除CF CDN缓存，避免延迟生效~~（2024.12.11已完成）\n30. :white_check_mark:~~管理端批量选择时，记录用户选择的顺序~~（2024.12.20已完成）\n31. :memo:上传图片支持自定义上传路径，支持相册功能\n    - ~~文件夹删除功能~~（2025.3.6已完成）\n    - ~~文件位置移动功能~~（2025.3.7已完成）\n    - ~~管理端加载更多数据时鬼打墙问题修复~~（2025.3.6已完成）\n    - ~~管理端批量操作适配文件夹~~（2025.3.6已完成）\n    - ~~管理端分页逻辑调整~~（2025.3.6已完成）\n32. :white_check_mark:~~支持多个 Telegram Bot Token 负载均衡~~（2025.2.4已完成）\n33. :white_check_mark:~~管理端提供详细的设置信息和设置方式引导~~（2025.2.5已完成）\n34. :white_check_mark:~~Logo焕新、登录页面优化、设置提示项等多项展示效果优化~~（2025.2.2已完成）\n35. :white_check_mark:~~接入S3 API渠道~~（2024.2.3已完成）\n36. :white_check_mark:~~支持短链接命名方式~~（2025.2.1已完成）\n37. :white_check_mark:~~支持深色模式~~（2025.1.11已完成）\n38. :hourglass_flowing_sand:支持KV备份恢复功能\n39. :white_check_mark:~~页脚可自定义隐藏~~（2025.2.4已完成）\n40. :hourglass_flowing_sand:搜索功能增强\n41. :white_check_mark:支持粘贴多个链接，支持外链管理\n42. :hourglass_flowing_sand:上传文件记录MD5，支持文件硬链接\n43. :hourglass_flowing_sand:上传页面增加最近上传展示\n\n\u003c/details\u003e\n\n## 5.2Fix Bugs👻\n\n\u003cdetails\u003e\n    \u003csummary\u003eBug修复列表\u003c/summary\u003e\n\n\n1. :white_check_mark:~~修复API上传无法直接展示在后台的问题~~（2024.7.25已修复）\n1. :white_check_mark:~~由于telegra.ph关闭上传，迁移至TG频道上传~~（2024.9.7已修复）\n1. :white_check_mark:~~修复未设管理员认证时管理端无限刷新的问题~~（2024.9.9已修复）\n1. :white_check_mark:~~修复部分视频无法预览播放的问题~~（经测试，暂定为文件自身存在问题，暂无法修复）\n1. :hourglass_flowing_sand:增加新的图片审查渠道\n1. :white_check_mark:~~R2渠道在管理端删除时，存储桶同步删除~~（2024.12.4已修复）\n1. :white_check_mark:~~读取文件响应头增加允许跨域头`access-control-allow-origin: *`~~（2024.12.9已修复）\n1. :white_check_mark:~~上传界面加入访问限制白名单~~（2024.12.11已修复）\n\n\u003c/details\u003e\n\n# 6.Q\u0026A\n\n\u003cdetails\u003e\n    \u003csummary\u003e常见问题解答\u003c/summary\u003e\n\n## 6.1未设置`ALLOWED_DOMAINS`，但无法跨域访问？\n\n- 请检查你的cloudflare防火墙设置（例如hotlink保护是否开启）\n- 参见[Issue #8](https://github.com/MarSeventh/CloudFlare-ImgBed/issues/8)\n\n## 6.2如何通过PicGo上传？\n\n- PicGo插件设置中搜索`web-uploader`，安装可自定义前缀的版本，如图：\n\n  ![](static/readme/202408231141491.png)\n\n- 打开`图床设置`-\u003e`自定义Web图床`-\u003e`Default`，然后按照下图方式配置，注意API地址和自定义图片URL前缀按照自己的域名进行修改。（**如果设置了`AUTH_CODE`，一定以`?authCode=your_authCode`的方式添加到API地址后面**）：\n\n  ![](static/readme/202408261959174.png)\n\n- 设置完成，确定即可使用PicGo上传到自建的图床。\n\n## 6.3上传失败怎么办？\n\n- 是否正确配置`TG_BOT_TOKEN`、`TG_CHAT_ID`等环境变量\n- 是否给机器人管理员配置**足够的权限**\n- 是否**正确绑定KV数据库**\n- 是否更新至**最新版**\n- 前往issues寻找相似问题\n\n## 6.4`TG_CHAT_ID`前面有没有`-`\n\n- 注意看图，前面有`-`\n\n## 6.5进入后台页面加载不出记录或图片\n\n- 网络问题，尝试刷新页面\n\n## 6.6后台进行删除、拉黑等操作时不能立即生效\n\n- 与CDN缓存有关\n- 详见[[重要\\]关于CDN缓存的说明（删除、拉黑等操作延迟生效解决方案） · Issue #123 · MarSeventh/CloudFlare-ImgBed (github.com)](https://github.com/MarSeventh/CloudFlare-ImgBed/issues/123)\n\n\u003c/details\u003e\n\n# 7.Tips\n\n- 前端开源，参见[MarSeventh/Sanyue-ImgHub](https://github.com/MarSeventh/Sanyue-ImgHub)项目。\n\n- **赞助**：项目维护不易，喜欢本项目的话，可以作者大大一点小小的鼓励哦，您的每一份支持都是我前进的动力\\~ \n\n  \u003ca href=\"https://afdian.com/a/marseventh\"\u003e\u003cimg width=\"200\" src=\"https://pic1.afdiancdn.com/static/img/welcome/button-sponsorme.png\" alt=\"\"\u003e\u003c/a\u003e\n  \n- **Sponsors**：感谢以下赞助者对本项目的支持！\n\n  \u003ca href=\"https://afdian.com/a/nothin\"\u003e\n        \u003cimg src=\"https://pic1.afdiancdn.com/user/e8af1436138e11ed945852540025c377/avatar/59db0533d82e4198f59e63df63a1917f_w640_h640_s114.jpeg?imageView2/1/w/240/h/240\" width=\"100\"/\u003e\n      \u003c/a\u003e \u003ca href=\"https://afdian.com/u/1acef0be02d911ee90695254001e7c00\"\u003e\n        \u003cimg src=\"https://pic1.afdiancdn.com/default/avatar/avatar-orange.png?imageView2/1/w/240/h/240\" width=\"100\"/\u003e\u003c/a\u003e\u003ca href=\"https://afdian.com/u/412189a0284911eca59f52540025c377\"\u003e\n        \u003cimg src=\"https://pic1.afdiancdn.com/default/avatar/avatar-orange.png?imageView2/1/w/120/h/120\" width=\"100\"/\u003e\u003c/a\u003e\n\n# 8.Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=MarSeventh/CloudFlare-ImgBed,MarSeventh/Sanyue-ImgHub\u0026type=Date)](https://star-history.com/#MarSeventh/CloudFlare-ImgBed\u0026MarSeventh/Sanyue-ImgHub\u0026Date)\n\n**如果觉得项目不错希望您能给个免费的star✨✨✨，非常感谢！**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMarSeventh%2FCloudFlare-ImgBed","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMarSeventh%2FCloudFlare-ImgBed","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMarSeventh%2FCloudFlare-ImgBed/lists"}