文件快递柜 FileBox

API 参考

所有接口均为 application/json REST 风格。Base URL 即你的部署地址。

以下为开发中 API 的变化方向(仅示意):授权码、无限制与多存储相关字段将在实现后正式生效。

POST /api/upload — 客户端直传令牌

基于所选存储(Blob / B2 / GitHub)获取上传凭证。Blob 前端调用 upload(pathname, file, { access:"public", handleUploadUrl: "/api/upload" })

{ "allowOverwrite": false, "maximumSizeInBytes": 1048576000 | null }

(开发中:无限制时 maximumSizeInBytesnull,需携带授权码。)

POST /api/share — 创建取件码

请求体:

{
  "files": [{ "name": "a.txt", "size": 1024, "type": "text/plain", "pathname": "file/uuid-a.txt", "store": "b2" | "blob" | "github" }],
  "expireDays": 7,        // 可选,默认取站点设置
  "maxDownloads": 100,    // 可选;null = 无限制(需授权码)
  "limitSize": false,     // 可选;true = 文件大小无限制(需授权码)
  "authCode": "0973"      // 使用无限制时的授权码(一次性)
}

成功返回 200

{ "code": "731387" }

无限制但授权码缺失/无效/已用/过期 → 403

POST /api/take — 凭码取件

{ "code": "731387" }

成功返回文件清单与剩余下载次数:

{
  "manifest": { "code": "731387", "files": [ { "name": "a.txt", "size": 1024, "type": "text/plain", "path": "..." } ], ... },
  "remaining": null    // 无限制时为 null
}

GET /api/download — 下载文件

查询参数:code(取件码)、path(文件 path,URL 编码)。存储于 GitHub 的文件自动选择最低延迟国内镜像回源。

返回 Content-Disposition: attachment 流式下载;每次下载计数,次数用完自动删除该分享。

管理接口(需 Cookie 会话)

方法路径说明
POST/api/admin/login登录,{ "password" },成功写 Cookie
GET/api/admin/shares分享列表
DELETE/api/admin/shares删除分享,body { "code" }
POST/api/admin/sharesbody { "action":"cleanup" } 执行孤儿文件清理
GET/api/admin/settings读取站点设置(含无限制开关)
PUT/api/admin/settings保存站点设置
GET/api/admin/authcodes查看授权码发放记录(开发中)
POST/api/admin/authcodes生成新授权码(开发中)
DELETE/api/admin/authcodes吊销某个授权码(开发中)
GET/POST/DELETE/api/admin/stores存储实例列表 / 新增(Blob·B2·GitHub)/ 删除,含配额(开发中)
管理接口需携带 fbc_session Cookie,未授权返回 401。