ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

FilePizza 浏览器文件传输工具:不经过第三方存储,让文件在两个浏览器之间直连的完整部署指南

FilePizza 浏览器文件传输工具:不经过第三方存储,让文件在两个浏览器之间直连的完整部署指南 FilePizza 浏览器文件传输工具不经过第三方存储让文件在两个浏览器之间直连的完整部署指南【免费下载链接】filepizza:pizza: Peer-to-peer file transfers in your browser项目地址: https://gitcode.com/GitHub_Trending/fi/filepizzaFilePizza 是一款基于 WebRTC 点对点直连的浏览器文件传输工具文件从上传者的浏览器直接流向下载者的浏览器中途不落任何中转服务器。服务端只承担两件事——生成可分享的短链接、撮合双方建立连接因此传输速度取决于两端各自的网络链路本身默认加密还可以再叠加一层密码校验。项目已有一个公开演示站点file.pizza不部署也能先体验再决定是否自托管。两个浏览器如何直连整个传输的地基是 WebRTC 数据通道。FilePizza 用 PeerJS 封装了建连过程上传者先向服务端创建通道得到一个带短标识slug的 URLslug 里编码着上传者的 PeerJS 标识下载者打开这个 URL 后服务端把 slug 翻译回上传者的标识两个浏览器随之完成握手。从这一刻起文件内容只在两端浏览器之间流动不再经过服务端。握手完成后的文件交换是一套 JSON 消息流程下载者先请求文件清单上传者返回文件名、大小与类型随后下载者逐个文件发起 Start 请求上传者以不超过 256 KiB 的块推送数据每块由下载者回发确认。连接中断后下载者可以重连并从最后确认的偏移量继续拉取不用从头再来。WebRTC 连接自身由 DTLS 加密上传时设置的口令则作为额外的验证层。实现层面项目使用 Next.js React TypeScript 作为应用框架Tailwind 负责样式next-view-transitions 做页面过渡Service Worker 支撑流式下载Redis可选用于把服务端状态移出应用进程。三步在本地跑起 FilePizza环境里需要 pnpm。克隆仓库并安装依赖git clone https://gitcode.com/GitHub_Trending/fi/filepizza cd filepizza pnpm install开发模式用pnpm dev启动带热更新构建并启动生产环境pnpm build pnpm start启动后在浏览器里打开本地地址选取文件即可获得下载链接换一个浏览器打开该链接就能完成一次完整的直连传输。 用 Docker 运行构建、启动与停止如果环境里已有 Docker仓库自带 compose 编排包含 redis 与 coturn 服务三个命令覆盖完整流程pnpm docker:build pnpm docker:up pnpm docker:down最后一条用于停止服务运行期间可用pnpm docker:logs查看日志。自托管时如何配置 TURN 与 Redis默认情况下项目依靠公共 STUN 帮助位于 NAT 后的两端互相发现位置。当双方处于更严格的 NAT例如对称型 NAT时STUN 可能无法打通此时需要启用自建 coturn 做中继转发环境变量作用默认值COTURN_ENABLED设为true启用 TURN 中继关闭TURN_HOSTTURN 服务器主机名或 IP127.0.0.1TURN_REALM生成 TURN 凭证时使用的 realmfile.pizzaSTUN_SERVER未启用 TURN 时使用的 STUN 地址stun:stun.l.google.com:19302REDIS_URLRedis 连接串存放通道元数据未设置时回退为内存存储无PEERJS_HOST/PEERJS_PATH自托管 PeerJS 服务器的主机与路径0.peerjs.com//TURN 凭证由服务端动态签发并写入 Redis实现可参考 src/coturn.ts。如果两端都能直连不必部署 coturn只保留默认值即可需要状态持久化时再准备 Redis。功能一览口令、多文件打包与移动端支持v2 版本的能力集中在让直连传输在手机上也能用、过程可控制界面与主题全新界面支持深色模式主题逻辑在 src/components/ThemeProvider.tsx 中。移动端适配大多数移动浏览器包括 Mobile Safari。上传者侧可实时看到每个下载者的传输进度并随时叫停传输。安全链接可加口令保护页面提供举报入口用于处置滥用行为。多文件一次选择多个文件上传下载者收到的是一个 zip。流式下载借助 Service Worker大文件边接收边写入磁盘不必等全部传完。状态存储通道元数据放入 Redis与应用进程解耦。使用前的常见问题文件会不会经过你的服务器不会。服务端只负责发链接和撮合建连文件内容始终在两端浏览器之间流动。这也意味着上传者需要保持页面打开直到传输完成。同一个链接能给别人多人同时下载吗可以。把短链接或完整链接发给不同的人他们会各自并行地从上传者的浏览器拉取数据不需要为每人生成独立链接。文件大小有上限吗代码里没有硬性限制实际受限于浏览器能读取的规模与两端网络状况大文件建议在稳定网络下传输。上传者关闭浏览器之后会怎样该链接无法再发起新的下载已经完成传输的下载者会转而给尚未完成的下载者继续供种。更完整的消息定义与交互时序图见 docs/file-transfer-protocol.md。项目以 BSD 3-Clause 许可证发布。【免费下载链接】filepizza:pizza: Peer-to-peer file transfers in your browser项目地址: https://gitcode.com/GitHub_Trending/fi/filepizza创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表