FilePizza 浏览器 P2P 文件传输上手指南
2026/9/17 18:09:16 网站建设 项目流程

FilePizza 浏览器 P2P 文件传输上手指南

【免费下载链接】filepizza:pizza: Peer-to-peer file transfers in your browser项目地址: https://gitcode.com/GitHub_Trending/fi/filepizza

周五 17:50,渲染同事老周把 2.4 GB 的交付素材要发给异地的合作方。按老路子,先上传网盘,进度条才走到 40%;再转给对面,还得等对方从网盘拉下来,来回又是大半天。

FilePizza 走的是一条更直接的路线:一个在浏览器里完成点对点(P2P,设备与设备直接对话,不走中转)文件传输的开源工具。文件从发送方的浏览器直接流进接收方的浏览器,全程不经过任何第三方服务器。它基于 WebRTC(浏览器内置的实时通信技术),官方还维护着在线实例,打开就能用。

3 个理由,看看 FilePizza 值不值得试

快,因为少绕了一段云

传统网盘分享的链路是"先传到服务器,再由对方从服务器拉"。FilePizza 把上传这一步直接省掉了,数据只在两端浏览器之间流动。速度取决于双方带宽和距离,服务器不参与搬运。

翻译成人话:传 100 GB 和传 100 KB,走的都是同一条浏览器直连通道,文件不会先去"快递站"再转手。

隐私,靠"文件根本不落地"

文件在传输过程中不会出现在任何中间服务器上。同时 WebRTC 通道自带 DTLS 加密(一种自动协商密钥的传输层加密),再叠加可选的密码保护。

翻译成人话:就算服务器被翻个底朝天,也翻不到你的文件,因为它从来就没上去过。

零门槛与零成本

浏览器打开即用,不用注册、不装软件、不装插件,移动端浏览器(包括 Mobile Safari)也能跑。项目开源,BSD 3-Clause 协议,无文件数量、无使用次数限制。

翻译成人话:不收钱、不占地方,用浏览器能打开的地方就能用。

对比维度网盘分享邮件附件FilePizza
文件路径先上传,服务器中转服务器中转浏览器到浏览器
隐私程度文件存于第三方受邮件服务商管控不经过任何中间服务器
使用门槛注册账号、上传等待有附件大小限制打开网页即可,链接 1 小时自动过期

30 秒看懂 FilePizza 的工作原理

  1. 选文件后,服务器生成一条短链接和一条长链接(短链接是 8 位随机码,长链接是 4 个单词拼成的,都更难被猜到)。类比:给包裹贴一张取件码。
  2. 接收方打开链接,向服务器查询这个链接对应哪个发送方。类比:拿取件码到前台扫码定位快递柜。
  3. 两个浏览器通过 WebRTC 直接握手、建起加密数据通道,服务器只负责"介绍认识"。类比:双方通了电话,之后的对话跟电话局无关。
  4. 文件被切成最多 256 KiB 的块,从发送方浏览器逐块推到接收方,每块都有回执确认。类比:一箱水果分批搬,每箱签收。
  5. 传完自动断开,服务器端的链接过期作废。类比:搬完货,仓库不留底单。

完整的消息协议(请求信息、开始传输、数据块、确认等 11 种消息)写在 docs/file-transfer-protocol.md 里,想搞懂细节可以对着看。

5 分钟跑通第一次 FilePizza 传输

  1. 浏览器打开 FilePizza 页面(官方实例是 file.pizza,也可按本文后面的方式自部署)。
  2. 点"添加文件",或把文件直接拖进页面;多文件会自动打包。
  3. 页面生成短链接和长链接,复制任意一条发给接收方。
  4. 接收方点开链接,确认文件信息后开始下载;发送方页面实时看到进度。
  5. 传输结束,页面可停止传输,链接一小时后自动失效。

⚠️ 易踩的坑:发送方的浏览器窗口必须全程开着,中途关掉页面,链接立刻失效。

💡 顺手记一下:同一条链接可以同时发给多人下载,不用重复建任务。

进阶玩法与高频问题

场景:发敏感文件

加一层密码,只有知道密码的人才能开始下载。

  • 创建传输时设置密码
  • 通过另一个渠道把密码告知接收方
  • 密码错误时对方看不到任何文件信息

场景:传一组文件

多个文件会被流式打包,接收方拿到的就是一个 zip。

  • 一次拖入整个文件夹的内容
  • 无需自己先压缩
  • 接收方保存时自动落为 zip 文件

场景:大文件、弱网

下载方可暂停,之后从上次确认的偏移量继续。

  • 弱网时先暂停,等网络恢复
  • 重连后接着传,不从头再来
  • 发送方也可以在页面主动停止传输

场景:公司内网传文件

两边都在 NAT 后面、直连连不上时,启用 TURN 中继。

  • 部署时设置COTURN_ENABLED=true
  • docker-compose.yml 已内置 coturn 服务,开箱可用

高频问题速答

Q:传到一半断网了怎么办?接着传。重连后从最后一个确认的偏移量处继续,不用从头开始。

Q:文件有大小上限吗?没有硬性上限。项目 FAQ 的原话是"你的浏览器能处理多大就是多大"。

Q:发送方关掉浏览器会怎样?链接立刻失效,不能发起新下载。已传完的接收方会继续给传了一半的人做补充分发。

Q:传输是加密的吗?是。WebRTC 通道默认使用 DTLS 加密,密码保护是可选的额外一层。

Q:能同时发给多人下载吗?能。同一条链接发给几个人即可,同时下载的人越多,单人速度会摊薄。

私有部署:Docker 三条命令跑起来

git clone https://gitcode.com/GitHub_Trending/fi/filepizza cd filepizza pnpm docker:build pnpm docker:up

起来之后浏览器访问http://localhost:8080。compose 文件里已经带了 Redis(存频道元数据)和 coturn(NAT 中继)两个服务,见 docker-compose.yml。

手动部署只记三步:pnpm install装依赖 →pnpm build构建 →pnpm start启动。

配置项作用
REDIS_URL频道元数据存到哪;不设置则用内存存储
COTURN_ENABLED设为true后启用 TURN,帮 NAT 后面的设备互连
TURN_HOSTTURN 服务器地址,默认127.0.0.1

架构鸟瞰:数据都往哪走

发送方浏览器 ──WebRTC/PeerJS 直连──▶ 接收方浏览器 │ │ └──────── REST(信令/短链)──────▶ FilePizza 服务器

数据走浏览器之间的 WebRTC 通道,服务器只在建连阶段被问到一句"这个链接是谁"。频道(链接加对应关系)的存取逻辑在 src/channel.ts 中,默认存活 1 小时。

接下来可以做什么

  • 打开官方实例 file.pizza,传一个小文件走一遍完整流程
  • 按上面的 Docker 命令在自己机器上搭一套,体验私有部署
  • 读一遍 docs/file-transfer-protocol.md,看看两个浏览器之间到底在聊什么

选一条动手就好。文件只在两端浏览器之间流动、服务器不留存——这大概也是 FilePizza 最省心的地方。

【免费下载链接】filepizza:pizza: Peer-to-peer file transfers in your browser项目地址: https://gitcode.com/GitHub_Trending/fi/filepizza

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询