LAN File Share · Python HTTP

同一 Wi-Fi,文件秒传互享

基于 Python 内置 http.server 搭建的局域网文件服务:启动即得访问地址,手机扫码或浏览器打开即可上传下载——无需注册、无需云盘、数据不出内网。

Python 3HTTP 服务拖拽上传二维码访问零客户端

项目用途

在家庭、办公室、实验室等可信局域网内,快速完成大文件、多文件的点对点传输,替代 U 盘插拔与第三方网盘中转。

核心目标

让任意一台运行 Python 的电脑成为临时文件服务器,同一子网内的手机、平板、其他 PC 通过浏览器即可完成双向传输。

  • 会议资料现场分发,参会者扫码即取
  • 开发机向测试手机推送 APK / 安装包
  • 剪辑素材从工作站传到笔记本预览
  • 内网环境无法访问公网云盘时的应急方案

设计理念

极简启动:一条命令或双击脚本即可监听端口;Web 界面自包含,不依赖 CDN 运行时。用完关闭进程,不留后台服务。

  • 自动探测本机局域网 IP 并拼接访问 URL
  • 支持多文件拖拽上传与目录浏览
  • 可选二维码便于移动端扫码打开
  • 开源透明,可自行审计与二次开发

项目特色与功能

轻量 HTTP 服务 + 现代 Web 上传体验,专为局域网场景优化。

☁️

浏览器即客户端

接收方无需安装 App,Safari / Chrome / 微信内置浏览器均可访问。

📡

自动 LAN 地址

启动时解析本机 IPv4,生成 http://192.168.x.x:端口 可分享链接。

📲

二维码分享

终端或网页展示 QR Code,手机一扫直达上传页,告别手输 IP。

📂

目录浏览下载

列出共享目录文件,支持单文件下载与批量选取(视实现版本而定)。

🔒

数据不出内网

流量仅在局域网交换,适合敏感文档、未发布素材的内部分发。

🐍

纯 Python 栈

基于标准库与少量依赖,跨 Windows / macOS / Linux 均可运行。

HTTP 文件服务

  • 自定义 HTTPServer / ThreadingHTTPServer 处理并发
  • 静态页面提供上传表单与文件列表
  • 支持 GET 下载、POST multipart 上传
  • 可配置共享根目录与监听端口

网络发现

  • 通过 socket 获取本机局域网 IP
  • 枚举网卡地址,过滤回环与链路本地
  • 终端打印可点击 URL 与可选 ASCII 二维码
  • 防火墙提示与端口占用检测

Web 上传体验

  • HTML5 拖拽多文件入队
  • 上传进度条与完成状态反馈
  • 文件名冲突时的覆盖或重命名策略
  • 大文件分块上传扩展点(可二次开发)

安全与边界

  • 默认仅绑定局域网,不暴露公网
  • 建议仅在可信网络短期开启
  • 可添加简易 Token 或 Basic Auth 门禁
  • 上传目录权限与磁盘空间需自行把控

交互演示

在浏览器中模拟局域网文件分享的典型操作流程(演示数据均为前端模拟,非真实网络传输)。

Demo 1 · 拖拽上传队列与进度模拟

拖拽文件到此处,或 点击选择

支持多文件 · 模拟上传进度

Demo 2 · 局域网地址与二维码生成

服务运行中 · 端口 8765
http://192.168.1.108:8765

同网段设备连接同一 Wi-Fi / 有线交换机即可访问

Demo 3 · 局域网速率测试模拟

模拟千兆 / 百兆 / Wi-Fi 5 环境下的上传吞吐对比(随机波动,仅供示意)。

千兆有线
0 MB/s
百兆有线
0 MB/s
Wi-Fi 5
0 MB/s
手机 5G Wi-Fi
0 MB/s

Demo 4 · 文件浏览与连接状态

📁 shared/5 项
📄 presentation.pdf 2.4 MB
📦 assets.zip 48 MB
📝 readme.md 4 KB
🎬 demo.mp4 320 MB
📁 photos/ 目录

连接设备

DESKTOP-PC · 192.168.1.108 主机

iPhone 15 · 192.168.1.142

MacBook-Air · 192.168.1.89

点击左侧文件模拟下载提示

技术栈

以 Python 标准库为骨干,按需叠加轻量第三方库。

服务端扩展 http.server 处理静态资源与文件上传;客户端为零安装的现代浏览器。网络层依赖局域网 TCP/IP,应用层为 HTTP/1.1。

Python 3.8+http.serversocketthreadingpathlibHTML5 File APIFetch / XHRqrcode(可选)

快速上手

三分钟内在局域网内跑起来。

Step 1 · 获取代码

从 GitHub 克隆或下载 Release 包:git clone https://github.com/Cuishaoyang99/lan-file-share,进入项目目录。

Step 2 · 启动服务

执行 python server.py(或 README 指定入口)。终端显示 LAN URL,浏览器打开验证列表页。

Step 3 · 分享与传输

将 URL 或二维码发给同网段同事/朋友,对方浏览器上传或下载。完成后 Ctrl+C 关闭服务。

提示:首次运行若防火墙询问,请选择「专用网络允许」。公司电脑可能需要管理员协助放行入站规则。

常见问题

Q:手机访问不了电脑的 IP 怎么办?

首先确认两者连接同一路由器且未开启 AP 隔离;其次检查 Windows 防火墙是否放行 Python 入站;最后 ping 对方 IP 验证连通。若使用公司 Wi-Fi,可能禁止设备互访。

Q:速度比 U 盘慢很多?

无线干扰、路由器背板带宽、百兆网口或杀毒实时扫描都会拉低吞吐。尽量使用 5GHz Wi-Fi 或有线连接;关闭实时扫描或将共享目录加入白名单。

Q:能否从外网访问?

本项目面向局域网设计。若需外网,应使用反向代理、TLS、强认证,并充分评估安全风险——不建议将简易 HTTP 服务直接端口映射到公网。

Q:上传文件大小有限制吗?

默认受磁盘剩余空间与 Python/浏览器内存策略约束。可在服务端设置上限或分块接收。超大文件建议走 SMB/NFS 或专业方案。

Q:和 AirDrop / Nearby Share 比如何?

系统近场分享在支持的设备间体验更无缝;本方案优势在于跨平台统一 Web 入口、可批量共享整个目录,且便于集成到自动化脚本。

同一 Wi-Fi,文件即刻到手

克隆仓库,一条命令启动,把链接或二维码甩给同事——传输完毕,关闭进程,干净利落。