{"id":28151452,"url":"https://github.com/iawooo/cftc","last_synced_at":"2026-02-25T21:31:09.674Z","repository":{"id":287344114,"uuid":"964428899","full_name":"iawooo/cftc","owner":"iawooo","description":"[cftc]-基于cloudflare图床,支持tg机器人面板和网页管理,上传,自定义后缀","archived":false,"fork":false,"pushed_at":"2025-06-09T10:15:43.000Z","size":1509,"stargazers_count":52,"open_issues_count":3,"forks_count":54,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-09T11:25:19.002Z","etag":null,"topics":["cftc","cftc-data","cftgtc","cloudflare","cloudflare-images","cloudflare-pages","cloudflare-r2","cloudflare-telegram-image-hosting","cloudflare-workers","free-image-hosting","image-host","image-hosting-service","telegram-bot-api","telegram-image-hosting-service","tgtcalenda"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iawooo.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,"zenodo":null}},"created_at":"2025-04-11T07:44:34.000Z","updated_at":"2025-06-09T10:15:47.000Z","dependencies_parsed_at":"2025-04-11T09:53:26.797Z","dependency_job_id":"90368d66-857f-4e23-9d7b-a05615a7c6a6","html_url":"https://github.com/iawooo/cftc","commit_stats":null,"previous_names":["iawooo/cftc"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/iawooo/cftc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iawooo%2Fcftc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iawooo%2Fcftc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iawooo%2Fcftc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iawooo%2Fcftc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iawooo","download_url":"https://codeload.github.com/iawooo/cftc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iawooo%2Fcftc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29841543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T21:18:31.832Z","status":"ssl_error","status_checked_at":"2026-02-25T21:18:29.265Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["cftc","cftc-data","cftgtc","cloudflare","cloudflare-images","cloudflare-pages","cloudflare-r2","cloudflare-telegram-image-hosting","cloudflare-workers","free-image-hosting","image-host","image-hosting-service","telegram-bot-api","telegram-image-hosting-service","tgtcalenda"],"created_at":"2025-05-15T04:12:21.541Z","updated_at":"2026-02-25T21:31:09.648Z","avatar_url":"https://github.com/iawooo.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cftc-基于cloudflare部署的图床。[直达部署](https://github.com/iawooo/cftc/tree/main?tab=readme-ov-file#%E9%83%A8%E7%BD%B2%E6%95%99%E7%A8%8B)\n- 支持telegram机器人管理和网页管理文件（包括上传，删除，分类，修改后缀等功能）\n## [cftc](https://github.com/iawooo/cftc/) 支持R2 telegram存储，多多star后期可能会跟进B2 S3等存储\n## 📸 截图\n| 网页管理               | Telegram 交互            |\n|------------------------|--------------------------|\n| ![网页管理](https://github.com/user-attachments/assets/38d2ca56-d316-4463-a488-90b9acf5043d) | ![Telegram Bot](images/image.png) |\n\n## ✨ 核心特性\n\n- **与 [CTT](https://github.com/iawooo/ctt) 项目协同，实现一举两得**  \n  - **提升整体效率**：与  [CTT](https://github.com/iawooo/ctt)  项目无缝协作，共享 Telegram 生态的优势。群组中用户既能享受 CTT 的消息转发功能，又能利用 cftc 的图床服务，最大化 Telegram 群组的价值。\n\n- **Telegram 机器人驱动的智能管理**  \n  - **随时随地操作**：内置 Telegram 机器人提供直观的菜单面板，支持上传、修改后缀、管理和分类文件等功能。用户通过简单按钮即可完成复杂操作，无需专业技能，管理文件如同聊天般轻松。\n\n- **永久直链的革命性体验**  \n  - **提升用户体验**：通过先删除旧文件、上传新文件并修改直链后缀为旧后缀。用户可以在不更改链接的情况下频繁更新文件内容（如替换照片或文档），特别适合博客、电商或需要稳定链接的场景。\n\n- **Cloudflare workers/pages部署**  \n  - **快速上手**：代码简单，部署代码，填写变量便能使用。\n  - **免费永久稳定的图床服务**  Cloudflare 的业界领先稳定性，一旦部署，文件托管长期可靠，无需担心服务中断或数据丢失，一劳永逸，节省维护精力。\n\n- **Cloudflare D1 数据库**  \n  - **高效存储**：使用Cloudflare D1这个根本用不完的数据库存储用户设置和文件元数据，避免用kv这个少得可怜还造成动不动扣费的现象。\n\n- **利用 Telegram 群组的无限免费存储**  \n  - **零成本存储**：利用 Telegram 群组作为免费存储后端，空间近乎无限，成本为零。用户无需额外付费即可托管图片、视频和文档，轻松实现高性价比的图床。   \n\n- **灵活的双存储模式**  \n  - **灵活适配，覆盖广泛**：支持 Telegram 存储和 Cloudflare R2 存储两种模式，用户可根据需求自由切换。Telegram 模式适合轻量文件，R2 模式支持大文件和高性能，满足从个人分享到企业托管的多种场景。  \n\n- **动态直链后缀修改**  \n  - **直链可复用**：cftc 允许用户随时修改文件直链的后缀，无需更改文件内容即可生成新链接。改变了传统图床“修改内容必须更换直链”的限制，实现动态化管理。  \n \n## ✨ 核心功能\n\ncftc 提供了以下强大的功能，满足从个人用户到开发者的多种需求：\n\n- **Telegram 机器人交互**  \n  - 通过 Telegram 机器人直接上传图片、视频、音频或文档等文件，实时获取直链。\n  - 支持 `/start` 命令打开交互菜单，轻松管理文件和设置。\n  - 提供分类创建、存储切换和文件后缀修改等功能，操作简单直观。\n  - **使用场景**：快速分享照片给朋友、在群组中分发文件，或为博客生成图片链接。\n\n- **双存储支持**  \n  - **Telegram 存储**：利用 Telegram 的内置文件存储，适合轻量级用户，无需额外配置。\n  - **Cloudflare R2**：支持大文件和高并发访问，享受 Cloudflare 的全球 CDN 加速。\n  - **动态切换**：用户可通过 Telegram 或网页界面随时切换存储类型。\n  - **使用场景**：小文件用 Telegram 存储节省成本，大文件用 R2 确保性能。\n\n- **强大的文件管理**  \n  - 网页管理面板支持文件预览、分类、搜索和批量操作。\n  - 支持创建和删除分类，所有文件可按类别组织，便于管理。\n  - 允许修改文件后缀，生成自定义直链，提升品牌一致性。\n  - **使用场景**：整理项目资源、归档团队文件或管理个人媒体库。\n\n- **安全与认证**  \n  - 可选的用户名/密码认证，保护管理界面免受未经授权的访问。\n  - 使用 HTTP-only 和 Secure Cookie，确保登录会话安全。\n  - **使用场景**：为私有项目设置访问限制，或保护敏感文件。\n\n- **二维码分享**  \n  - 每上传一个文件，自动生成二维码，便于移动设备扫描和访问。\n  - 支持网页和 Telegram 分享链接，简化分发流程。\n  - **使用场景**：快速分享活动海报、会议资料或社交媒体内容。\n\n- **多格式兼容**  \n  - 支持图片（JPG、PNG、GIF 等）、视频（MP4、WebM）、音频（MP3、WAV）和文档（PDF、DOCX 等）。\n  - 自动识别文件类型并优化显示（例如图片预览、视频播放）。\n  - **使用场景**：上传设计稿、演示视频或技术文档，满足多样化需求。\n\n- **性能优化**  \n  - 内置文件缓存、菜单缓存和按钮缓存，减少 API 请求，提升响应速度。\n  - 利用 Cloudflare Workers 的无服务器架构，全球低延迟访问。\n  - **使用场景**：为高流量网站提供可靠的图片托管服务。\n\n## 部署教程\n#### 准备工作\n**创建Telegram Bot**（获取`TG_BOT_TOKEN`变量）：\n   - 在Telegram中找到`@BotFather`，发送`/newbot`创建新机器人。\n   - 按照提示设置机器人名称和用户名，获取Bot Token（例如`123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11`）。\n**创建后台群组**（获取`TG_STORAGE_CHAT_ID`变量）：\n   - 创建一个Telegram群组（按需设置是否公开），\n   - 添加机器人为管理员。\n   - 获取群组的Chat ID（例如`-100123456789`），可以通过`@getidsbot`获取（拉它进群）。\n\n#### 创建D1 SQL数据库（获取`DATABASE`变量）\n1. 登录[Cloudflare仪表板](https://dash.cloudflare.com/)。\n2. 导航到 **存储和数据库 \u003e D1 SQL数据库**，输入一个名称（例如`cftc`），点击 **创建**。\n\n#### 创建R2存储桶（获取`BUCKET`变量）\u003c可选\u003e\n\n\n### 部署到Cloudflare pages (推荐)\n### **点个star，frok本项目**\n#### 创建pages项目\n1. 登录[Cloudflare仪表板](https://dash.cloudflare.com/)。\n2. 导航到 **Workers和Pages \u003e Workers和Pages**，点击 **创建**。\n3. 点击 **Pages**，再点击 **连接到Git** \n4. 选择 **cftc** 存储库，点击**开始设置**，输入项目名称（例如`cftc`）\n5. 点击 **保存并部署**，等待20秒左右，点击 **继续处理项目**\n6. 点击**设置**，根据变量表添加或绑定变量，确保变量正确。\n7. 点击**部署**，找到**重试部署**，点击**重试部署**\n\n### 部署到Cloudflare Workers \n1. 登录[Cloudflare仪表板](https://dash.cloudflare.com/)。\n2. 导航到 **Workers和Pages \u003e Workers和Pages**，点击 **创建**。\n3. 点击**Hello world**，命名后点击**部署**\n4. 点击**编辑代码**，删除原来的代码再把该项目中的 **_worker.js**代码替换\n5. 点击部署后根据变量表配置变量\n## 🛠️ 使用说明\n\n*   **网页界面**:\n    *   访问 Worker/pages 的 URL (例如 `https://cftc.workers/pages.dev/` 或你的自定义域名)。\n    *   如果启用了认证，需要先在 `/login` 页面登录。\n    *   `/upload`: 文件上传页面，可选择分类和存储后端。\n    *   `/admin`: 文件管理后台，可查看、搜索、筛选、分享、删除文件和管理分类。\n*   **Telegram Bot**:\n    *   向你的 Bot 发送 `/start` 开始交互。\n    *   直接发送图片、视频、文档等文件给 Bot 进行上传。\n    *   使用 Bot 提供的内联键盘按钮进行各种操作（切换存储、管理分类、查看文件、修改后缀、删除文件等）。\n    *   按照 Bot 的提示回复消息以完成特定操作（如输入新分类名称、要删除的文件名、新后缀等）。\n\n以下是项目中需要在 Cloudflare 环境中绑定的变量及其说明：\n\n| **变量名**                  | **类型**   | **描述**                                                                 | **默认值/示例**            |\n|-----------------------------|------------|--------------------------------------------------------------------------|----------------------------|\n| `DATABASE`                 | D1 绑定    | **(必需)** Cloudflare D1 数据库绑定名称，用于存储文件元数据、用户设置和分类信息。   | `cftc-db`             |\n| `DOMAIN`                   | 环境变量   | **(必需)** Cloudflare Workers/pages 部署域名，用于生成文件直链和设置 Telegram Webhook。    | `yourdomain.workers/pages.dev`   |\n| `TG_BOT_TOKEN`             | 环境变量   | **(必需)** Telegram 机器人 Token，用于与 Telegram API 通信以处理文件上传和交互。    | `123456:ABC-DEF1234ghIkl` |\n| `TG_STORAGE_CHAT_ID`       | 环境变量   | **(必需，如果使用 Telegram 存储)** 用于存储文件的 Telegram 群组或频道 ID。           | `-100123456789`            |\n| `USERNAME`                 | 环境变量   | **(必需，如果 `ENABLE_AUTH` 为 `true`)** 管理面板的登录用户名。                          | `admin`                    |\n| `PASSWORD`                 | 环境变量   | **(必需，如果 `ENABLE_AUTH` 为 `true`)** 管理面板的登录密码。                            | `your_secure_password`     |\n| `MAX_SIZE_MB`              | 环境变量   | **(可选)** 单个文件的最大大小限制（单位 MB），防止上传过大文件。                    | `20`                       |\n| `BUCKET`                   | R2 绑定    | **(可选)** Cloudflare R2 存储桶绑定名称，用于 R2 存储模式（若启用）。               | `cftc-bucket`         |\n| `COOKIE`                   | 环境变量   | **(可选)** 网页认证 Cookie 的有效期（单位天），控制登录会话时长。                   | `7`                        |\n| `TG_CHAT_ID`               | 环境变量   | **(可选)** 允许使用机器人的 Telegram 用户（英文逗号分隔），限制访问权限。      | `123456789,987654321`     |\n| `ENABLE_AUTH`              | 环境变量   | **(可选)** 是否启用网页管理界面的用户名/密码认证（`true` 或 `false`）。             | `true`                     |\n\n## 🧩 技术栈\n\n- **Cloudflare Workers/pages**：高性能无服务器运行时，支持全球部署。\n- **Cloudflare D1**：SQLite 数据库，存储文件元数据和用户设置。\n- **Cloudflare R2**：对象存储，替代传统文件托管服务。\n- **Telegram Bot API**：实现实时文件上传和交互。\n- **JavaScript (ES Modules)**：核心逻辑，异步处理请求。\n\n## 🤝 贡献\n### 欢迎提交 Issue 或 Pull Request！如果您有任何改进建议或新功能需求，请随时联系我。\n\n## 🌟 致谢\n### [帖子](https://www.nodeseek.com/post-308544-1#1) 和[CF-tgfile](https://github.com/yutian81/CF-tgfile) 提供参考和灵感\n### 感谢所有测试者、贡献者和社区支持！\n###  [cloud flare](https://www.cloudflare.com/) - 提供强大的基础设施支持。\n### [telegram](https://telegram.org/) - 便捷的 Bot API。\n### 感谢 [xAI](https://x.ai/)   [claude](https://claude.ai/) 帮助我完成了本项目的开发和优化\n\n## 声明\n\n- **尊重原创，转载须知**  \n  如需转载，请务必注明出处，感谢支持！严禁将本项目用于任何违法犯罪行为。  \n- **二次修改与发布**  \n  欢迎基于本项目进行二次开发，但请在发布时注明原始出处，共同维护开源社区的良好氛围。\n\n# ⭐ 觉得项目不错点个star，谢谢您的star\n![Star 增长趋势](https://raw.githubusercontent.com/iawooo/StarCharts/refs/heads/main/images/cftc_star_chart.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiawooo%2Fcftc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiawooo%2Fcftc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiawooo%2Fcftc/lists"}