GitHub 文件服务器部署文档

GitHub 文件服务器部署文档

功能概述

  • 通过 GitHub API 上传文件到 GitHub 仓库或 Gist
  • 提供文件直链生成功能
  • 支持文件管理界面查看上传记录
  • 支持删除数据库记录

部署步骤

1. 准备工作

  • 一个 GitHub 账号
  • 一个 Cloudflare 账号
  • 一个有效的 GitHub Personal Access Token (需要 gist 和 repo 权限)

2. 创建 Cloudflare Worker

  1. 登录 Cloudflare 控制台
  2. 进入 “Workers & Pages” 部分
  3. 点击 “Create application” → “Create Worker”
  4. 此仓库 gitfiles-plus.js 中的代码全部复制粘贴到 Worker 编辑器中

3. 配置环境变量

在 Worker 的 “Settings” → “Variables” 中添加以下环境变量:

变量名 描述 示例值
GH_TOKEN GitHub Personal Access Token ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
GH_DB D1 数据库绑定名称 (可选) DB
RAW_DOMAIN 私有仓库文件直链域名 (可选) raw.yourdomain.com

4. 初始化数据库 (可选)

如果需要使用数据库记录上传历史:

  1. 在 Cloudflare 控制台创建 D1 数据库
  2. 将数据库绑定到 Worker (GH_DB 变量)
  3. 首次访问 Worker 会自动创建所需表结构

5. 部署

点击 “Save and Deploy” 按钮完成部署

API 文档

1. 上传文件

端点: POST /api/upload

请求格式: multipart/form-data

参数:

  • upload-type: 上传类型 (gist 或 github)
  • files: 要上传的文件 (多文件)

Gist 上传额外参数

  • gist-public: 可见性 (on 为公开,否则私有)
  • existing-gist: 现有 Gist ID (可选,用于追加文件)

GitHub 上传额外参数

  • gh-username: GitHub 用户名 (必填)
  • gh-repo: 仓库名 (必填)
  • gh-branch: 分支 (默认 main)
  • gh-path: 仓库内路径 (默认 /)

响应示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[
{
"filename": "test.txt",
"filesize": "1.2 KB",
"upload_type": "github",
"upload_time": "2025-04-25T12:34:56.789Z",
"github_username": "yourname",
"github_repo": "yourrepo",
"github_branch": "main",
"github_path": "docs",
"page_url":"https://github.com/yourname/yourrepo/blob/main/docs/test.txt",
"direct_url": "https://github.com/yourname/yourrepo/raw/main/docs/test.txt"
}
]

2. 查询文件列表

端点: GET /api/qry

参数:

  • page: 页码 (默认 1)

响应示例:

1
2
3
4
5
6
7
8
9
10
[
{
"id": 1,
"filename": "test.txt",
"filesize": "1.2 KB",
"upload_type": "github",
"upload_time": "2025-04-25T12:34:56.789Z",
"page_url": "https://github.com/yourname/yourrepo/blob/main/docs/test.txt",
"direct_url":"https://github.com/yourname/yourrepo/raw/main/docs/test.txt" }
]

3. 删除记录

端点: DELETE /api/rec/{id}

响应示例 (成功):

1
2
3
4
{
"success": true,
"id": 1
}

前端界面

1. 主界面 (/)

  • 文件上传表单
  • 支持拖放上传
  • 可选择上传到 Gist 或 GitHub
  • 显示上传结果

image.png

2. 文件管理界面 (/list)

  • 显示上传历史记录
  • 支持搜索和分页
  • 可删除记录

image.png

注意事项

  1. GitHub API 有速率限制,请合理使用
  2. 私有仓库需要配置 RAW_DOMAIN 环境变量才能生成直链
  3. 上传到 GitHub 仓库需要确保 Token 有对应仓库的写入权限
  4. 文件大小限制取决于 Cloudflare Worker 的限制 (默认约 10MB)
  5. 暂未添加鉴权功能,切勿用于公益访问,待后期增加 api 鉴权

常见问题

Q: 上传失败显示 “Token 无效或权限不足 “
A: 检查 GH_TOKEN 是否有正确的权限 (gist 和 repo),并确保对目标仓库有写入权限

Q: 私有仓库直链无法访问
A: 需要先部署 cmliu/CF-Workers-Raw 项目,绑定自定义域名,然后在本项目设置 RAW_DOMAIN 环境变量,指向 raw 项目绑定的自定义域名

Q: 数据库记录不显示
A: 检查是否已正确绑定 D1 数据库到 Worker,并确保 GH_DB 变量名称匹配

#cloudflare #github