浏览器P2P直连传文件:FilePizza 3步把大文件从你的浏览器直接送到对方浏览器
【免费下载链接】filepizza:pizza: Peer-to-peer file transfers in your browser项目地址: https://gitcode.com/GitHub_Trending/fi/filepizza
周五下午,编辑甩来一句"素材包马上要",而你要发的是 3GB 的视频工程文件。邮件附件放不下,云盘要先上传再让对方登录下载,来回折腾一两个小时。FilePizza 换了个思路:在浏览器里直连传文件,文件从你的浏览器直接流向对方浏览器,全程不经过任何中间服务器,官方也提供了一个公开实例可以直接体验。
它怎么做到直传的
核心是 WebRTC 技术,你可以把它理解成两个人直接打电话,不经过总机——两个浏览器之间建一条加密的"专线",数据只在这条线上跑。FilePizza 的服务器只在开头帮一把:它负责生成链接、把双方的"电话号码"对接起来,连接一旦建立,服务器就不再碰任何文件了。
整个过程不长:
- 你在页面里选文件,点"开始传输"
- 服务器生成一条分享链接
- 对方打开链接,两个浏览器自动"握手"接通
- 文件直接从你的浏览器流向对方,传完链接自动失效
生成和管理这些分享链接的通道,在 传输通道实现 里。
三步跑起来
想先在自己机器上试试,用 Docker 最省事:
- 拿到代码并装依赖:
git clone https://gitcode.com/GitHub_Trending/fi/filepizza- 进入目录安装依赖:
cd filepizza && pnpm install - 构建并启动:
pnpm docker:build && pnpm docker:up
完成后在浏览器打开本地地址,就能拖文件进去了。
值得注意的几个设计
🔒 传输可以加密码。分享链接时设置一个可选密码,对方输入正确才会建立连接——这意味着即使链接被人捡到,没有密码也打不开你的文件。发合同、设计稿这类敏感内容时尤其有用,密码输入这块在 密码输入组件 里。
📦 多文件自动打包。一次勾选多个文件时,发送方不用自己压缩,接收方拿到的会是一个 ZIP 包,文件名和结构都保留。这背后是边传边打包的流式实现,见 多文件打包逻辑,适合"把整个文件夹发过去"的场景。
一个链接能发给很多人。同一条链接可以同时给几个人用,他们各自独立下载;发送方页面上能看到传输进度,中途觉得带宽不够了还能直接停掉,把网速让给正在开会的自己。
放到真实场景里
远程办公里很典型的一类:外包剪辑师等你的 5GB 工程包,你不需要再找网盘开会员,浏览器里选好文件、把链接丢进对话,对方点开就开传,速度基本就是双方网络的极限。
给家人批量传旅行照片也顺。手机浏览器直接打开,挑好几百张照片,传过去对方收到的就是一个 zip,不用注册任何账号。
还有开发者交接项目:代码加资源动辄几个 G,走邮件不现实,走内网直连又快又干净,而且服务器上不留任何副本,敏感代码不会在第三方存一份。
想自己搭一套
如果不想用公开实例,在自己服务器上搭一套:
pnpm docker:build pnpm docker:up手动跑也可以:装完依赖后一条pnpm dev就能在开发模式里体验完整流程。
几个常被问到的问题
问:文件大小有限制吗? 答:理论上只要你的浏览器能打开就能传。真正的上限是两端设备的内存和剩余空间。
问:传完文件会存在服务器上吗? 答:不会。文件只存在于传输过程中,服务器只存了很短时效的链接元数据,不碰文件本体。
问:我关掉浏览器会怎样? 答:分享链接立即失效。如果对方已经传完,他还可以帮没传完的人续传,但不能再发起新的下载。
问:传输中途断网了怎么办? 答:连接断开后这条传输就停了,让发送方重新发起一次即可。因为发送方本地也没存文件副本,重传是从头开始。
问:传输过程安全吗? 答:WebRTC 连接自带 DTLS 加密,数据在浏览器之间是加密的,再叠加可选密码保护,链路上看不到明文内容。
回到周五下午那个 3GB 的素材包:打开 FilePizza,拖进文件,把链接发给编辑,它就从你的屏幕直接飞进对方的浏览器,中间谁都不用等。下次再有大文件要发,试试这条"直线"。
【免费下载链接】filepizza:pizza: Peer-to-peer file transfers in your browser项目地址: https://gitcode.com/GitHub_Trending/fi/filepizza
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考