尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

FilePizza P2P文件传输指南:三步实现浏览器直传文件

FilePizza P2P文件传输指南:三步实现浏览器直传文件 FilePizza P2P文件传输指南三步实现浏览器直传文件【免费下载链接】filepizza:pizza: Peer-to-peer file transfers in your browser项目地址: https://gitcode.com/GitHub_Trending/fi/filepizzaFilePizza 是一个基于 WebRTC 的 P2P 文件传输工具文件从你的浏览器直接流向对方浏览器替代了先传服务器、再由接收方下载的传统中转方式。文件不落任何服务器磁盘速度只取决于两端网络。 P2P传文件的三个典型场景大文件交接传输数百 MB 以上的素材时不必等待上传服务器再下载速度不受服务器带宽挤压。一个链接多人拿同一条链接发给多人每人都从上传方浏览器直接取文件互不排队。敏感内容不落盘文件只经过两端浏览器之间的加密通道第三方服务器不留存适合不想走云存储的场景。三步上手从打开页面到传完文件创建频道打开 FilePizza点击选择文件挑选要分享的文件服务端会返回一个唯一的短链 slug。可选密码勾选密码选项后未输对密码的人只能看到提示页看不到文件。发送链接对方打开链接即开始传输上传者一侧可以实时查看进度随时点击停止。本地跑起来只需要三条命令git clone https://gitcode.com/GitHub_Trending/fi/filepizza pnpm install pnpm dev想用容器部署时执行pnpm docker:build pnpm docker:up即可镜像与服务编排见 Dockerfile 和 docker-compose.yml。 连接建立四步从链接到数据流动完整消息定义见 docs/file-transfer-protocol.md核心链路如下注册频道上传者在服务端创建频道得到编码了 PeerJS 标识的 slug实现见 src/channel.ts。解析链接下载者拿 slug 到服务端换取上传者的 P2P 身份服务端只发寻人信息不碰文件。建立直连双方经 WebRTC 建立数据通道通信默认走 DTLS 加密。分块传输下载者发 Start 请求上传者按不超过 256KiB 的块依次发送每块都有 ChunkAck 确认全部传完以 Done 收尾。实用技巧打包、口令与断点续传多文件自动 ZIP 打包一次选中多个文件时上传端流式边压边传下载者收到的是一个完整 ZIP。打包逻辑在 src/zip-stream.ts文件不会被先整体读进内存。密码保护与违规举报密码频道收到 RequestInfo 后先回 PasswordRequired口令通过才进入文件列表环节。接收方还可以举报不当频道上传端收到 Report 消息会中断传输并跳转提示页。断点续传与移动端下载者可随时暂停重连后从最后一个已确认的 offset 继续不必从头再来。v2 版本适配了包括 Mobile Safari 在内的大部分移动浏览器上传端还支持查看进度、停止传输。技术选型与自建要点前端Next.js React TypeScript Tailwind CSS自带深色模式P2PWebRTC 数据通道PeerJSService Worker 支持流式下载状态存储频道元数据写入 Redis未配置时自动回退到内存存储网络穿透通过COTURN_ENABLED、STUN_SERVER等环境变量配置 STUN/TURN帮助 NAT 后设备建立连接疑问速答三个最常问的问题问发完链接可以关浏览器吗答不行上传者需保持页面打开直到传输完成关闭后链接即失效。不过已完整下载的用户会继续为未传完的人补传剩余部分。问传输安全吗答所有 WebRTC 通信默认经 DTLS 加密再叠加可选密码就是双层保护文件全程不经过服务器。问文件大小有限制吗答协议层面没有上限实际瓶颈在浏览器的内存处理能力和设备性能。打开页面、选一个文件、把生成的链接丢进聊天窗口传输现在就能开始。【免费下载链接】filepizza:pizza: Peer-to-peer file transfers in your browser项目地址: https://gitcode.com/GitHub_Trending/fi/filepizza创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表