Skip to content

Repository files navigation

LAN 文件传输系统(Flask + Web)

无需安装手机 App,手机扫码后用浏览器即可与电脑互传文件。

功能

  • 局域网文件互传(手机 <-> 电脑)。
  • 启动后自动打开电脑端网页,网页内直接显示手机扫码二维码。
  • 终端模式可打印 ASCII 二维码;托盘模式可常驻后台。
  • 聊天风格传输记录列表,支持下载历史文件。
  • 电脑端支持拖拽上传;手机端收到电脑文件可一键下载。
  • 使用 WebSocket 实时同步记录,前后台切换时保持心跳。
  • 默认上传上限 10GB,电脑端可在前端动态调整(1GB~100GB)。
  • 电脑端发送给手机的文件使用临时缓存,不写入 received_files,下载后自动清理。
  • 新增电脑-电脑免验证码配对:局域网自动发现设备,点击目标设备发起请求,对端点“同意”即可配对。
  • 支持端口自动顺延场景:设备发现广播会携带当前端口,重启换端口后仍可被自动发现并配对。
  • 电脑端“发送目标”可切换为已配对电脑,文件会由本机服务中转到目标电脑并直接落盘到对方下载目录。
  • 若对端端口变化,发送端会在失败后自动探测并回写可用端口,降低“已配对但发送失败”概率。
  • 设置已改为独立弹窗窗口,主界面保持简洁。
  • 手机扫码连接成功后,电脑端二维码会立即自动刷新,避免旧码复用。
  • 电脑端可从设置进入“删除记录”模式,支持多选后批量删除历史记录(仅删历史,不删文件)。

开发运行

python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
python app.py --port 5000

常用参数:

python app.py --port 5000 --save-dir received_files
python app.py --no-browser
python app.py --no-terminal-qr

托盘运行(源码模式)

python tray_app.py --port 5000
python tray_app.py --port 5000 --debug

--debug 用于调试时允许多开实例;不加该参数时,默认仍为单实例保护。

托盘菜单支持:

  • 打开传输页面
  • 重启服务
  • 退出
  • 重复启动保护:如果程序已在运行,第二次启动会弹窗提示并直接打开已有页面

方案 1:打包 EXE

.\build\build_exe.ps1

调试打包(启用 PyInstaller debug bootloader):

.\build\build_exe.ps1 -DebugBuild

产物:

  • dist\LANFileTransfer.exe(托盘化、双击即用)

一键构建(推荐)

.\build\build_all.ps1

或双击:

build\build_all.bat

可指定版本号:

.\build\build_all.ps1 -Version 1.2.0

产物:

  • dist\LANFileTransfer.exe
  • dist\LANFileTransfer-v<版本号>.exe

大文件内存占用处理

上传接口按块写盘(默认 1MB/chunk),避免整文件驻留内存;下载使用 send_file(..., conditional=True),支持流式/分段请求,减少内存压力。

界面截图

运行界面截图

功能展示截图

About

局域网内的文件传输(支持pc-手机 或 pc-pc)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages