FilePizza|浏览器点对点文件传输:不经过服务器,2 分钟传完大文件
FilePizza浏览器点对点文件传输不经过服务器2 分钟传完大文件【免费下载链接】filepizza:pizza: Peer-to-peer file transfers in your browser项目地址: https://gitcode.com/GitHub_Trending/fi/filepizza如果你也受够了先上传到网盘、再等对方下载的两段式等待FilePizza 换了个思路浏览器点对点文件传输文件从你的浏览器直接发到对方浏览器全程不经过任何服务器。项目开源且免费BSD 3-Clause文件大小只受浏览器能装下多少的限制不限速、不限次。两分钟传完第一份文件打开主页把文件拖进虚线框也可以点击选择。确认页会列出文件名可以顺手填一个密码点开始后页面立刻生成两条分享链接一条 8 位短链一条四个单词的长链哪条好记发哪条。把链接发给对方。对方打开链接、点下载进度条就开始走你这边能实时看到连了哪些人、各自传到多少。注意一点你要把标签页开着直到传输结束。FilePizza 不存任何文件页面一关链路立刻断。同一条链接可以同时发给多个人他们各自独立下载互不冲突。四个维度拆开看密码保护、流式下载、断点续传与进度可观测安全文件默认加密密码是第二道闸门 WebRTC 数据通道自带 DTLS 公钥加密文件在两个浏览器之间以密文流转不用额外配置。在创建页填一个密码下载方输对密码才能拿到文件列表校验发生在 P2P 通道内服务器无从知晓。链接被乱转时上传方页面有举报入口触发后上传方被重定向到/reported所有在线下载方收到中止信号传输集体停止。服务器只存谁在哪个地址peer ID 加 slug这类元数据没有任何文件内容。性能大文件边收边写不卡在内存里文件按 256 KiB 分块推送每块都有确认回执网络抖动不会导致整个文件重传。下载侧借助 Service Worker 流式落盘边收边写磁盘大文件不必先在内存里攒完。选多个文件时上传方自动打包成 ZIP 传输接收方解压即得原目录结构。协作暂停与断点续传下载方说了算下载方可以中途暂停重新打开原链接后协议直接从上一个已确认的字节偏移处继续不用从头再来。上传方页面每 60 秒向服务器续期一次频道默认 TTL 一小时只要不关页面链接就一直有效。一个容易被忽略的细节已经下完的人若还开着页面会顺手给没下完的人继续播种分担上传方的上行带宽。可观测性两边都有进度错误有明确文案上传方页面列出当前连接和整体进度传输随时可以主动终止。下载方有总大小、已收字节和实时进度条连接失败时给出的是上传方是否关掉了浏览器这类可以直接照做排查的提示而不是笼统的网络错误。它是怎么做到的服务器只发号不碰文件服务器干的全是发号 查号的活。上传方创建频道拿到短链和长链下载方打开链接服务器把 slug 解析成上传方的 peer ID从这一刻起两边直接在 WebRTC 数据通道上说话服务器一个字节都看不到。消息类型和传输序列在协议规范里有逐条定义slug 生成、TTL、续期与销毁的逻辑可以看频道管理源码。自己搭一台Docker Compose 优先Docker Compose 一键启动推荐git clone https://gitcode.com/GitHub_Trending/fi/filepizza cd filepizza pnpm docker:build pnpm docker:up默认的docker-compose.yml会拉起三个容器filepizza端口 8080、redis、coturn起来之后访问http://localhost:8080即可。要对外提供服务时改用docker-compose.production.yml它监听 80 端口、开放 coturn 中继端口 60000-60128并设置COTURN_ENABLEDtrue让 NAT 后面的双方可以走 TURN 中转打通。手动部署备选点击展开手动部署步骤pnpm install pnpm dev生产形态是pnpm build之后pnpm start要求 Node.js 18。常用环境变量REDIS_URL– 存放频道元数据的 Redis 连接串不设置时回退到进程内存存储COTURN_ENABLED– 置为true启用 TURN 中继TURN_HOST– TURN 服务器地址默认127.0.0.1TURN_REALM– 生成 TURN 凭据使用的 realm默认file.pizzaSTUN_SERVER– 关闭 TURN 时使用的 STUN 地址默认 Google 公共 STUNPEERJS_HOST/PEERJS_PATH– 自建 PeerJS 服务器的主机与路径默认走公共 PeerJS避坑速查按症状倒推原因症状可能原因处理下载页提示连不上上传方上传方关掉了浏览器或标签页让对方重新分享提醒他传输期间别关页面打开链接说频道不存在频道 TTL1 小时到了或上传方页面已关闭让上传方重新创建页面开着时频道每 60 秒自动续期一般不会自己过期握手卡住、长时间连不上双方都在 NAT 后面直连打不通自托管实例启用 coturn生产 compose 已配好双方刷新页面重试传大文件速度远低于预期上传方上行带宽是天花板且被多个下载方共享减少同时下载的人数或换个网络环境收到的不是原文件而是一个 .zip传的是多个文件属正常行为解压即可目录结构会保留输密码反复提示无效密码校验在 P2P 层进行多余空格也会判错复制密码时留意首尾空格仍不行就让上传方重新创建频道现在就试把短链甩给下一个群打开主页拖进任意一个文件把生成的短链发给你旁边的人——这是体会 P2P 与先上传再下载差别的最短路径。FilePizza 的定位一句话服务器只发号文件只在浏览器之间流动开源、无大小限制、不存你任何东西。【免费下载链接】filepizza:pizza: Peer-to-peer file transfers in your browser项目地址: https://gitcode.com/GitHub_Trending/fi/filepizza创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考