一个基于Cloudflare Worker的GitHub文件管理工具,支持通过网页界面上传、下载、预览和删除GitHub仓库中的文件,具备完整的用户认证系统。
- 📁 查看GitHub仓库指定文件夹的文件列表
- ⬆️ 多文件上传(支持批量上传和进度显示)
- 👁️ 文件预览(图片、文档等直接在浏览器中查看)
- ⬇️ 文件下载
- 🗑️ 文件删除
- 🔐 用户登录认证系统
- 🌐 基于Web的友好界面
- 🔒 通过GitHub Token进行安全认证
- 🔄 动态路径管理(支持任意数量GitHub文件夹)
- 📊 多文件上传进度条
- 🔍 文件筛选和选择管理
- 🎯 智能文件类型检测
- 📱 响应式设计,支持移动设备
在项目根目录创建 .env 文件(已存在):
# GitHub API配置
GITHUB_TOKEN=ghp_your_token_here
GITHUB_OWNER=your_username
GITHUB_REPO=your_repository
GITHUB_BRANCH=main
# 登录认证配置
LOGIN_USERNAME=admin
LOGIN_PASSWORD=your_secure_password
SESSION_SECRET=your_unique_session_secret
SESSION_MAX_AGE=3600
# 动态路径配置(支持任意数量)
GITHUB_PATH1=docs/images
GITHUB_PATH1_NAME=文档图片
GITHUB_PATH2=assets/files
GITHUB_PATH2_NAME=资源文件
GITHUB_PATH3=uploads
GITHUB_PATH3_NAME=上传文件
# 可以继续添加更多路径...或者直接修改 wrangler.toml 文件
[vars]
GITHUB_TOKEN = "ghp_token"
GITHUB_OWNER = "github_username"
GITHUB_REPO = "repo"
GITHUB_BRANCH = "main"
GITHUB_PATH1 = "1"
GITHUB_PATH1_NAME = "1路径描述"
GITHUB_PATH2 = "2"
GITHUB_PATH2_NAME = "2路径描述"
# 登录认证配置
LOGIN_USERNAME = "admin"
LOGIN_PASSWORD = "password123"在Cloudflare Dashboard中设置以下环境变量:
GitHub配置
GITHUB_TOKEN: GitHub个人访问令牌GITHUB_OWNER: 仓库所有者用户名GITHUB_REPO: 仓库名称GITHUB_BRANCH: 分支名称(默认:main)
登录认证配置
LOGIN_USERNAME: 登录用户名(默认:admin)LOGIN_PASSWORD: 登录密码SESSION_SECRET: 会话密钥(用于Cookie加密)SESSION_MAX_AGE: 会话有效期(秒,默认3600)
动态路径配置
GITHUB_PATH1,GITHUB_PATH2, ...: 仓库内的文件夹路径GITHUB_PATH1_NAME,GITHUB_PATH2_NAME, ...: 路径的显示名称(可选)
确保您的GitHub Token具有以下权限:
repo(完全控制私有仓库)- 或者
public_repo(仅公开仓库)
npm installnpm run dev- 首次访问: 访问任何页面将自动重定向到登录页面
- 输入凭据: 使用配置的用户名和密码登录
- 会话管理: 登录后保持会话,可随时登出
- 安全保护: 所有管理页面都需要登录才能访问
项目支持任意数量的GitHub文件夹路径:
- 访问根路径 (
/): 显示路径选择界面,列出所有配置的路径 - 访问具体路径 (
/path1,/path2,/path3, ...): 进入对应路径的文件管理界面 - 路径切换: 通过页面顶部的导航按钮在不同路径间切换
- 单文件上传: 可选择文件并自定义文件名
- 多文件上传: 支持批量选择多个文件
- 进度显示: 实时显示每个文件的上传进度
- 文件管理: 显示已选择文件列表,支持筛选和删除
- 支持格式: JPG、PNG、GIF、BMP、WebP、SVG、PDF、TXT、MD、HTML、XML、JSON、CSV、LOG
- 预览方式: 点击"查看"按钮在新标签页中打开文件
- 自适应显示: 图片和文档自动适应浏览器窗口
- 下载: 点击"下载"按钮保存文件到本地
- 删除: 点击"删除"按钮从GitHub仓库移除文件
- 自动刷新: 页面加载时自动获取文件列表
- 操作按钮: 每个文件提供查看、下载、删除操作
- 智能显示: 仅对可预览文件显示查看按钮
- 文件选择: 支持多文件选择和拖拽(浏览器支持)
- 文件名管理: 单文件可自定义文件名,多文件保持原名称
- 进度监控: 实时显示上传进度和状态
- 文件筛选: 可对已选择文件进行搜索筛选
- 会话管理: 使用HttpOnly Cookie存储会话令牌
- 密码保护: 所有管理操作需要登录认证
- 会话超时: 可配置的会话有效期
- 安全登出: 彻底清除会话信息
- GitHub Token保护: 通过环境变量安全存储
- 输入验证: 服务器端验证所有用户输入
- XSS防护: 所有动态内容都进行HTML转义
- 路径安全: 防止路径遍历攻击
- 文件类型验证: 限制可上传的文件类型
- 大小限制: 遵守GitHub API的文件大小限制
- 错误处理: 完善的错误处理和用户提示
├── index.js # Cloudflare Worker主文件(包含所有功能)
├── wrangler.toml # Wrangler配置文件
├── package.json # 项目依赖配置
├── .env # 环境变量(本地开发)
└── README.md # 项目说明
- Cloudflare Workers: 无服务器计算平台
- GitHub REST API: 文件操作接口
- HTML5/CSS3/JavaScript: 现代化前端界面
- Wrangler: Cloudflare Workers开发工具
-
401错误(认证失败)
- 检查GitHub Token是否有效
- 验证Token权限是否足够
- 确认仓库、分支、路径是否存在
-
登录问题
- 检查登录凭据是否正确
- 验证环境变量配置
- 清除浏览器Cookie后重试
-
文件上传失败
- 检查文件大小(GitHub API限制)
- 验证文件类型是否支持
- 检查网络连接
-
预览功能问题
- 确认文件类型是否支持预览
- 检查浏览器是否支持该文件类型
- 验证文件内容是否完整
- 使用浏览器开发者工具查看网络请求
- 检查Cloudflare Worker日志
- 验证环境变量配置是否正确
- 桌面浏览器: Chrome、Firefox、Safari、Edge(最新版本)
- 移动浏览器: iOS Safari、Android Chrome
- 技术要求: 支持ES6+ JavaScript、Fetch API、FormData
- 🔐 完整的用户登录认证系统
- 👁️ 文件预览功能(图片、文档等)
- 📦 多文件上传支持
- 📊 上传进度条显示
- 🔍 文件筛选和管理功能
- 🎯 智能文件类型检测
- 📱 响应式界面优化
- 📁 基础文件管理(上传、下载、删除)
- 🔄 动态路径支持
- 🌐 Web界面
MIT License
欢迎提交Issue和Pull Request来改进这个项目。