Android / iOS 点对点文件传输与个人网盘客户端
P2P 直连 · 默认加密 · 无需公网 IP · 基于 webrpc
在手机上与电脑、其他手机直连传文件,或连接自己运行的个人 NAS,随时浏览、上传、下载家里的目录。数据优先走点对点加密通道,不经过中心化网盘托管。
简体中文 · English
File2File(本仓库为 Flutter 手机客户端)是一款基于 webrpc 的跨平台移动应用,把两件事放在同一套界面里:
- 点对点聊天与文件传输:两端直连后发消息、传文件,不必先把文件上传到公有云。
- 个人网盘 / NAS:连接自己运行的
mywebdisk-server,在手机上浏览、上传、下载、搜索、整理家里的磁盘目录。
通道默认加密,不需要公网 IP,也不要求路由器端口映射。Token 是设备身份;认证口令可限制谁能连上你。
桌面端(Windows / macOS / Linux)请使用独立仓库:
File2File Desktop
- 经常在 手机 ↔ 电脑 / 手机 ↔ 手机 之间传安装包、素材、文档的人
- 希望出差或外出时,安全访问 家里电脑或 NAS 目录,并且文件始终存放在自己指定的磁盘上
- 已有或计划使用 File2File Desktop 的用户,需要配套的移动端
- 多会话管理:新建、备注、连接、断开、删除、清空本地记录
- 文字消息与文件发送(相册、系统文件选择器)
- 传输进度、失败重试;接收文件可下载或保存到相册
- 与 File2File Desktop 使用同一套 webrpc 会话与消息协议,可互通
连接自建的 mywebdisk-server 后,可在手机上:
| 能力 | 说明 |
|---|---|
| 浏览 | 目录列表、上级路径、容量与剩余空间 |
| 上传 / 下载 | 相册或多文件排队上传;独立任务页查看进度与重试 |
| 预览 | 文本编辑保存;图片;音视频边下边播 |
| 整理 | 新建文件夹、重命名、移动、删除、多选批量操作 |
| 搜索 | 全盘按文件名搜索 |
数据保留在你指定的服务器目录中,读写走 webrpc 加密 P2P 通道。
| 项目 | 说明 | 链接 |
|---|---|---|
| webrpc | P2P 传输与 Token 服务 | https://www.webrpc.cn/ |
| File2File Desktop | Windows / macOS / Linux 桌面客户端 | GitHub 仓库 |
| mywebdisk | 个人网盘服务端(mywebdisk-server) |
GitHub 仓库 |
| File2File App(本仓库) | Android / iOS 手机客户端 | 当前仓库 |
两端(或网盘服务端)都需要 webrpc 的 Token 与 密码。可在官网注册并领取 / 购买 Token;应用内也支持 一键注册 领取 Token(以实际界面与 webrpc 活动规则为准)。
请勿把 Token、密码、认证口令写入仓库、脚本或公开文档。仅在应用内填写。
- 从本仓库源码构建并安装 App(见下文)。
- 使用 webrpc Token 与密码登录,并设置 认证口令(必填,对方连接你时需要)。
- 可勾选记住账号,方便下次自动登录。
- 对方使用 File2File Desktop 或另一台 File2File App,并保持在线。
- 在手机端「会话」中新建连接,填写对方 Token 与对方认证口令(若有)。
- 连接成功后即可发送文字与文件。
对方连接你时,需填写你在登录时设置的认证口令。
- 在存放文件的机器上,从 mywebdisk 下载并启动
mywebdisk-server(传入该机器的 Token、密码、口令与共享目录)。 - 手机端用另一枚 Token 登录(不要与网盘服务端 Token 相同)。
- 在「网盘」中新建连接,填写服务端 Token 与
--permission口令。 - 连接成功后即可浏览、上传、下载与管理文件。
服务端启动参数说明与各平台预编译程序见:mywebdisk 仓库。
当前以源码构建为主,暂不提供应用商店或独立预编译安装包。
- Flutter(本仓库以 Flutter 3.47+ / Dart 3.13+ 验证)
- Android:Android SDK、JDK;真机或 arm64 模拟器(webrpc Android 原生库为
arm64-v8a) - iOS:Xcode 与 CocoaPods(真机需有效签名)
本仓库提供环境脚本(可选):
source tool/env.sh
flutter doctor若已配置 AVD File2File_API35_arm64(建议分辨率 1080×1920):
./tool/run_android_emulator.sh或手动:
source tool/env.sh
flutter emulators --launch File2File_API35_arm64
flutter run -d emulator-5554webrpc Android 库目前仅提供 arm64-v8a。请使用 arm64 模拟器或 arm64 真机,不要使用 x86 系统镜像。
flutter pub get
flutter run # 连接已启动的设备 / 模拟器
flutter build apk # Android
flutter build ios # iOS(需在 macOS + Xcode 完成签名)原生 webrpc 库位于工程内 webrpc-sdk/;Android 侧 libwebrpc.so 已放入 android/app/src/main/jniLibs/arm64-v8a/。
和普通网盘 App 有什么区别?
聊天传文件是设备到设备;个人网盘功能连接的是你自己运行的 mywebdisk-server,目录由你指定,平台不托管文件内容。
没有公网 IP 能用吗?
可以。连接与传输依赖 webrpc,不要求固定公网 IP 或端口映射。
Token 从哪里获取?
前往 webrpc 官网 注册并管理 Token;也可在 App 登录页使用一键注册(若功能可用)。
为什么网盘要用两枚 Token?
一枚给家里的 mywebdisk-server,另一枚给手机客户端。连接网盘时,在 App 里填写服务端那枚 Token 与口令。详见 mywebdisk 说明。
能和桌面版互通吗?
可以。请使用 File2File Desktop,双方在线并正确填写 Token / 认证口令即可。
Android 模拟器连不上原生库?
确认使用 arm64 镜像与 arm64-v8a 的 libwebrpc.so,不要用 x86 模拟器。
| 层 | 技术 |
|---|---|
| 应用 | Flutter(Android / iOS) |
| P2P 通道 | webrpc C ABI(dart:ffi) |
| 本地状态 | 安全存储 Token / 会话与传输元数据 |
File2File、File2File App、P2P 文件传输、点对点传文件、手机传文件、个人网盘、个人 NAS、无公网 IP、webrpc、Flutter、Android、iOS、mywebdisk、加密传输
- webrpc 官网(Token):https://www.webrpc.cn/
- File2File 桌面版:https://github.com/xiaoming-software/File2File-Desktop/tree/main
- 个人网盘服务端 mywebdisk:https://github.com/xiaoming-software/mywebdisk
- 英文说明:README.en.md
File2File 只在对端之间传数据,不托管你的文件。请自行保管 Token 与口令,只连接你信任的设备与联系人。