PocketChest:基于 Cloudflare 的临时文件分享,上传即拿码,过期自动删

前言

要发个文件给别人,你现在怎么做?

微信发 —— 文件大了传不了。网盘分享 —— 得登录、建共享链接、还要暴露自己账号。临时文件分享服务 —— 要么要注册,要么有奇怪的广告。

PocketChest 是开源的临时文件分享方案,一句话概括:上传文件 → 拿 6 位提取码 → 发给对方 → 过期自动删除。

整套跑在 Cloudflare 上(Pages + Workers + R2 + D1),部署在你自己的 Cloudflare 账号下,数据完全在你手里。不需要服务器,不需要数据库运维。

技术架构

浏览器 → Cloudflare Pages (Next.js 前端)
Cloudflare Workers (API 后端)
├── D1 数据库 (提取码、过期时间)
└── R2 对象存储 (文件本身)

纯 Cloudflare 全栈。文件存在 R2 里(S3 兼容、免流量费),元数据在 D1(Cloudflare 的 SQLite 兼容数据库),Cron 触发器定期清理过期文件。

核心功能

  • 无需注册:任何人都能上传和下载,打开即用
  • 6 位提取码:上传后生成唯一提取码,发给对方输入就能下载
  • 自动过期:1 天、3 天、7 天、15 天,或永久保存
  • 200GB 大文件:基于 R2 分片上传,文件大小不受 Workers body 限制
  • TOTP 二次认证:可选开启,上传需要输入 Authenticator 验证码
  • 文本 + 文件混合分享:可以同时上传文件和粘贴文本

部署

PocketChest 是 Cloudflare 原生应用,部署在 Cloudflare Dashboard 里操作:

  1. Fork 项目到自己的 GitHub:https://github.com/CoCoBoom/pocketchest
  2. 在 Cloudflare Dashboard 创建 Pages 项目,连接 GitHub 仓库
  3. 配置环境变量(R2 bucket、D1 database、JWT_SECRET 等)
  4. 创建 Workers 服务和 Cron 触发器

项目 README 有详细的环境变量清单和部署指南。

使用场景

跨设备传文件

手机拍了张图想发到电脑上 —— 微信发会压缩,AirDrop 只有苹果设备能用。PocketChest 上传拿码,电脑上输入码下载,原图不压缩。

临时分享敏感文件

合同、身份证照片这类敏感文件,不适合发微信(会被缓存到腾讯服务器)。PocketChest 设 1 天自动过期,对方下载后文件自动删除。

团队文件交换

设计师给开发发设计稿、开发给测试发安装包。不需要网盘账号,不需要权限管理 —— 上传拿码发群里就行。

安全考量

  • HTTPS 全程加密:Cloudflare 默认 SSL
  • TOTP 二次认证:陌生环境上传需要验证,防止滥用
  • 自动过期:文件不是永久存着的,到期自动清理
  • 数据在你自己账号下:不经过第三方服务

总结

PocketChest 解决的是一个很具体的场景:临时、安全、无摩擦地分享文件。

Cloudflare 全栈架构意味着零服务器成本、零运维负担。部署一次,之后就只是用 —— 上传、拿码、分享。过期自动清理,不占存储、不留痕迹。

如果你经常需要临时传文件,花半小时部署一个 PocketChest,比任何第三方文件分享服务都省心。