Skip to content
Battlemagnet1Public

About

局域网文件传输助手:电脑↔手机↔电脑 互传文件(扫码/自动发现/微信QQ分享接收/Web UI)

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FileShare - 局域网文件传输助手

📁 同一局域网内,电脑 ↔ 手机 ↔ 手机 之间快速互传文件,无需互联网、无需数据线。

✨ 功能特性

双端互传

  • 🖥️ 电脑端: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 ⚠️ bug 版,存在授权卡死等问题,请使用 v1.0.4 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

🚀 快速开始

电脑端

  1. 安装 FileShare-Setup-1.0.4.exe(或直接运行 pc/output/FileShare/FileShare.exe)
  2. 设置共享文件夹 → 点击「启动服务」
  3. 右栏「目标设备」默认本机,点击「连接」即可看到共享文件
  4. 手机连不上?点击「🔍 自动扫描」或检查路由器 AP 隔离/防火墙

手机端

  1. 安装 FileShare-v1.0.4.apk
  2. 方式一:扫电脑端二维码(扫码后自动连接进入文件列表)
  3. 方式二:点「🔍 自动扫描」发现设备
  4. 方式三:手动输入 IP:端口 → 连接
  5. 首次连接对方会弹出授权窗口,允许后自动进入文件列表
  6. 连接页顶部可开启「📡 手机互传」并管理「📂 我的共享文件」
  7. 微信/QQ 收到文件 → 分享 → 选 FileShare → 上传

🏗 从源码构建

电脑端 (Python)

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   # 打包

手机端 (Expo/React Native)

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

📡 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 会清空
  • 大文件传输请保持设备在线,不要锁屏

📄 License

仅供学习交流使用。

About

局域网文件传输助手:电脑↔手机↔电脑 互传文件(扫码/自动发现/微信QQ分享接收/Web UI)

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages