不经过服务器:FilePizza 让你 5 分钟搭起浏览器点对点文件传输
【免费下载链接】filepizza:pizza: Peer-to-peer file transfers in your browser项目地址: https://gitcode.com/GitHub_Trending/fi/filepizza
FilePizza 是一个在浏览器内完成点对点文件传输的开源项目:它基于 WebRTC(让两个浏览器之间建立加密直连的技术)把你的文件和对方的浏览器直连,全程不经过任何中间服务器。你选完文件后会得到一条分享链接,把链接发给对方即可直接下载,无需注册、无需等待上传到网盘。项目用 Next.js 与 React 构建,界面支持深色模式,也可以在手机浏览器里使用。
💡 它解决什么问题
设想两个场景:你要把一个 2GB 的录屏发给客户,传统网盘要先注册、等上传完成、再等对方下载;或者你要发送敏感文档,不想让内容被存在某个公司的服务器上。FilePizza 就是为这类场景设计的——文件在两个浏览器之间直接传送,服务器只负责转发"接头信息"(信令),从不接触文件内容。
✨ 核心功能亮点
直连传输,进度可见、可中止
上传页面上能看到每个连接者的下载进度,想结束时点一下停止即可,对方的下载随之结束。
多文件一次传,对方直接收 zip
一次勾选多个文件没问题,下载端会收到自动打包好的 zip 文件,不用逐个下载再解压。
密码保护与举报双保险
可以为分享链接设置一个可选密码,对方输对密码才能看到文件清单;遇到违规内容时,页面提供举报入口,被举报后上传者页面会跳转到举报页,并通知当前所有下载端中止传输。
流式下载,边下边存
下载端通过 Service Worker(浏览器中的后台任务机制)把数据到达的部分即时写入磁盘,不用等整份文件传完才开始保存。
🚀 5 分钟本地跑起 FilePizza
最短路径是从源码直接运行:
git clone https://gitcode.com/GitHub_Trending/fi/filepizza pnpm install pnpm dev在浏览器打开本地开发地址即可开始上传。如果你需要生产环境,仓库还通过 Docker Compose 提供了现成的构建与启动脚本,一条命令就能把整套服务拉起来。
🔍 工作原理:浏览器之间如何直传
整个流程分三步:
- 上传者的浏览器向服务器申请一个频道,获得一条带 8 位短码的分享链接。服务器只保存频道的元数据(默认 1 小时后过期),文件内容从不落盘。
- 下载者打开链接,服务器把短码还原成上传者的 PeerJS 标识(相当于建立直连用的"电话号码"),双方通过信令通道交换握手信息。
- 两个浏览器之间建立直连数据通道。文件被切成不超过 256KiB 的块依次发送,接收端对每个块做确认,中途断开后可以从最后确认的偏移处断点续传。
也就是说,文件内容始终只在你和对方的浏览器之间流动。
⚙️ 部署与自定义:最小配置清单
| 环境变量 | 用途 | 默认值 |
|---|---|---|
REDIS_URL | 存放频道元数据的 Redis 连接串,不设置则回退到内存存储 | 未设置 |
COTURN_ENABLED | 设为true时启用 TURN 中继,帮助 NAT 后的对等方打通直连 | 不启用 |
TURN_HOST | TURN 服务器地址 | 127.0.0.1 |
TURN_REALM | 生成 TURN 凭证时使用的领域 | file.pizza |
STUN_SERVER | 未启用 TURN 时使用的 STUN 服务器(帮助浏览器获知自己的公网地址以便直连) | stun:stun.l.google.com:19302 |
PEERJS_HOST | 自托管 PeerJS 信令服务器地址 | 0.peerjs.com |
PEERJS_PATH | 自托管 PeerJS 服务器的路径 | / |
❓ 常见问题
文件会存在我部署的服务器上吗?不会。内容在浏览器之间直传,服务器只做链接解析与信令。唯一的代价是上传方要一直开着页面,直到传输结束。
同一条链接能发给多个人吗?可以。把同一条短链接发给任意多人,上传页会列出所有当前连接者,方便你逐个管理。
文件大小有上限吗?没有硬性上限,实际极限取决于浏览器内存与网络状况,大文件建议在网络稳定的环境里测试。
上传方关掉页面后会怎样?链接无法再发起新的下载。但已经下载完成的人会继续为未完成的人做"种子",后者可以接着下完。
传输是加密的吗?WebRTC 通道由 DTLS(通道的密钥交换与加密层)自动加密。若再叠加密码保护,只有输对密码的人才能获取文件清单并开始下载。
📚 延伸阅读
- 文件传输协议规范:定义上传与下载的全部消息类型与完整对话流程,照着它就能实现一个兼容客户端。
- Docker Compose 配置:本地多容器部署的入口。
- 许可证:项目以 BSD 3-Clause 许可证发布,披萨插图致谢 iblowyourdesign。
想要一种"中间方摸不到内容"的文件分享方式,FilePizza 提供了私密且开箱即用的答案——把仓库克隆下来跑起来,5 分钟内你就能发出第一份文件。
【免费下载链接】filepizza:pizza: Peer-to-peer file transfers in your browser项目地址: https://gitcode.com/GitHub_Trending/fi/filepizza
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考