📁 同一局域网内,电脑 ↔ 手机 ↔ 手机 之间快速互传文件,无需互联网、无需数据线。
- 🖥️ 电脑端:GUI 控制面板 + 文件传输面板,支持上传/下载/目录浏览
- 📱 手机端:Android App,查看/下载/上传共享文件
- 🔄 电脑↔电脑 / 电脑↔手机 / 手机↔手机:输入目标 IP 即可浏览对方文件并互传
- 📂 管理我的共享文件(手机端):开启互传后,本机可直接查看/上传/删除自己的共享目录,与连接其他设备的操作完全一致
- 📷 扫码连接:电脑显示二维码,手机一扫即连(扫码直接进入文件列表)
- 🔍 原生快扫:局域网设备扫描约 1 秒完成,显示设备名/型号,区分在线设备与已保存服务器
- 📝 手动连接:支持 IP:端口 直接连接
- 🔒 连接授权:未授权设备请求连接时,对端弹出授权窗口(允许/拒绝),授权状态持久化
- 📤 微信/QQ 分享接收(Android):任何 App 里选"分享 → FileShare",文件直接上传到当前连接的设备
- ⬆️ 手机上传:文件列表页一键选择手机文件上传,带进度显示
- 🖥️ 电脑端上传进度:上传进度窗口实时显示进度百分比
- 📂 共享文件夹:自定义路径,放入文件即同步显示
- ⏳ 分享文件过期:文件超过有效期自动隐藏(磁盘保留),支持直链 403 拦截
- ⚙️ 独立设置界面(共享文件夹/端口/主题/开机自启/分享有效期/已授权设备管理)
- 🌐 Web UI(浏览器拖拽上传/下载/删除)
- 🚀 开机自启:开机自动启动服务
- 🎨 深浅主题切换
从 Releases 下载对应版本:
| 版本 | 说明 | 电脑端 (Windows) | 手机端 (Android) |
|---|---|---|---|
| v1.0.4 | ✅ 推荐,修复全部已知问题 | FileShare-Setup-1.0.4.exe |
FileShare-v1.0.4.apk |
| v1.0.3 | FileShare-Setup-1.0.3.exe |
FileShare-v1.0.3.apk |
|
| v1.0.2 | 稳定版 | FileShare-Setup-1.0.2.exe |
FileShare-v1.0.2.apk |
| v1.0.1 | 早期版 | FileShare-Setup-1.0.1.exe |
FileShare-v1.0.1.apk |
| v1.0.0 | 初始版 | FileShare-Setup-1.0.0.exe |
FileShare-v1.0.0.apk |
- 安装
FileShare-Setup-1.0.4.exe(或直接运行pc/output/FileShare/FileShare.exe) - 设置共享文件夹 → 点击「启动服务」
- 右栏「目标设备」默认本机,点击「连接」即可看到共享文件
- 手机连不上?点击「🔍 自动扫描」或检查路由器 AP 隔离/防火墙
- 安装
FileShare-v1.0.4.apk - 方式一:扫电脑端二维码(扫码后自动连接进入文件列表)
- 方式二:点「🔍 自动扫描」发现设备
- 方式三:手动输入 IP:端口 → 连接
- 首次连接对方会弹出授权窗口,允许后自动进入文件列表
- 连接页顶部可开启「📡 手机互传」并管理「📂 我的共享文件」
- 微信/QQ 收到文件 → 分享 → 选 FileShare → 上传
cd pc/
pip install -r requirements.txt # customtkinter flask waitress qrcode pillow
python main.py # 运行
pyinstaller --onedir --windowed --name FileShare \
--add-data "web/templates;web/templates" \
--add-data "web/static;web/static" \
--collect-all customtkinter main.py # 打包cd mobile/
npm install
npx expo prebuild -p android # 生成原生工程
cd android && gradlew.bat assembleRelease
# 产物: app/build/outputs/apk/release/app-release.apk详细构建说明见 BUILD_LOCAL.md
sharefile/
├── pc/ # 电脑端 (Python)
│ ├── main.py # 入口(支持 --autostart 开机自启)
│ ├── gui.py # GUI(大窗口 + 文件面板 + 设置 + 授权弹窗 + 上传进度)
│ ├── server.py # Waitress 服务器
│ ├── config.py # 配置管理
│ ├── auth.py # 连接授权管理器(状态机 + 弹窗队列)
│ ├── autostart.py # 开机自启(注册表)
│ ├── network.py # IP 获取 + 局域网自动发现
│ ├── share_client.py # 文件传输客户端(流式上传 + 授权轮询)
│ └── web/ # Flask Web UI
├── mobile/ # 手机端 (React Native/Expo)
│ ├── App.js # 入口
│ ├── app.json # Expo 配置
│ └── src/
│ ├── screens/ # Connect/FileList/Settings/Scan
│ ├── components/ # ShareServerBar/FileCard/ConnectionBar
│ ├── services/ # API + 存储
│ ├── hooks/ # useConnect/useLanScan/useFileList/useDownload
│ └── theme/ # 主题
│ └── android/app/src/main/java/com/fileshare/app/
│ ├── ShareIntentModule.kt # 微信/QQ 分享接收
│ ├── LanScannerModule.kt # 原生局域网快扫
│ └── PhoneServerModule.kt # 手机互传服务器(NanoHTTPD)
├── installer/ # Inno Setup 安装包脚本
├── apk/ # 构建产物
└── tools/ # 本地构建工具(JDK/SDK,不入库)
| 端 | 技术 |
|---|---|
| PC GUI | Python + customtkinter |
| PC 服务 | Flask + Waitress |
| PC Web UI | 纯 HTML/CSS/JS |
| PC 打包 | PyInstaller + Inno Setup |
| 手机 App | React Native + Expo SDK 52 |
| 手机互传 | 原生 Kotlin + NanoHTTPD |
| 分享接收 / 快扫 | Android 原生 Kotlin Module |
| 通信 | HTTP REST API |
| 方法 | 路径 | 功能 |
|---|---|---|
| GET | /api/server/info |
服务器信息(设备名/版本/有效期/是否需授权) |
| GET | /api/files?dir= |
文件列表(过期文件自动隐藏) |
| GET | /api/download/<path> |
下载文件(过期文件返回 403) |
| POST | /api/upload |
上传文件(multipart) |
| DELETE | /api/delete/<path> |
删除文件 |
| GET | /api/auth/status/<request_id> |
授权状态轮询(客户端凭 request_id 查询) |
请求头:
X-Device-Name(客户端上报设备名);X-FileShare-Probe: 1(扫描探测,不触发授权弹窗) 未授权设备访问返回401 AUTH_PENDING + request_id,客户端轮询/api/auth/status/<request_id>等待对端授权。
- 手机与电脑需连接同一局域网
- 连接失败排查:① 路由器 AP 隔离/访客网络 ② 防火墙放行 ③ 是否同一网段
- Android 9+ 已开启明文 HTTP(
usesCleartextTraffic),局域网内 http 可正常访问 - 手机互传共享目录位于 App 专属目录(
Android/data/com.fileshare.app/files/FileShare),卸载 App 会清空 - 大文件传输请保持设备在线,不要锁屏
仅供学习交流使用。