当前位置:首页>python>手机/平板别再用数据线了!Python搭个局域网秒传服务器,手机电脑随便甩,比AirDrop还香!

手机/平板别再用数据线了!Python搭个局域网秒传服务器,手机电脑随便甩,比AirDrop还香!

  • 2026-10-11 07:52:03
手机/平板别再用数据线了!Python搭个局域网秒传服务器,手机电脑随便甩,比AirDrop还香!

很多时候,我们只是想:

  • 把电脑里的文件快速发到手机
  • 把手机里的照片传回电脑
  • 临时共享一段文本
  • 不想安装微信、QQ、网盘、FTP、SMB

这时候,一个“纯 Python、本地运行、浏览器即可访问”的局域网传输工具就非常实用了。

本文基于 Python 标准库实现一个:

  • 无需第三方依赖
  • 支持 Python 3.6 ~ 3.13
  • 支持文件上传
  • 支持文本上传
  • 手机浏览器直接访问
  • 自动显示局域网地址

的轻量级局域网文件传输服务器。


一、项目效果

启动后:

python server.py

终端会显示:

🚀 文件传输服务器已启动

📍 本机访问:
http://127.0.0.1:8000

📱 手机/局域网访问:
http://192.168.1.8:8000

手机连接同一个 WiFi 后:

在浏览器输入:

http://192.168.1.8:8000

即可打开上传页面。


二、普通用户使用说明

1. 需要准备什么?

只需要:

  • 一台电脑
  • 安装 Python
  • 手机与电脑连接同一个 WiFi

2. 安装 Python

前往:

Python 官网

下载安装即可。

安装时记得勾选:

Add Python to PATH

3. 保存代码

将代码保存为:

server.py

4. 启动服务器

打开终端:

Windows:

cmd

Mac / Linux:

terminal

进入代码目录:

cd 文件所在目录

运行:

python server.py

5. 手机访问

程序启动后会显示:

http://192.168.x.x:8000

手机浏览器输入即可。


6. 可以做什么?

文本发送

适合:

  • 手机给电脑传代码
  • 发送笔记
  • 临时复制文本
  • Markdown 内容同步

发送后:

自动保存为:

text_20260516_120000.txt

文件上传

支持:

  • 图片
  • 视频
  • 压缩包
  • PDF
  • Word
  • 任意文件

上传后自动保存到:

程序当前目录

7. 常见问题

手机打不开页面?

检查:

(1)是否连接同一 WiFi

手机和电脑必须同网络。


(2)防火墙是否阻止 Python

Windows 首次运行会弹窗:

允许访问网络?

点击:

允许

(3)端口是否被占用

如果 8000 被占用:

修改:

run_server(8000)

例如:

run_server(8080)


接下来是面向开发者的内容

下面进入代码设计部分。


四、整体架构

整个项目只依赖:

http.server
socket
urllib.parse
json
os
re
datetime

属于:

  • 零依赖
  • 纯标准库
  • 单文件项目

核心架构:

浏览器
   ↓
HTTPServer
   ↓
BaseHTTPRequestHandler
   ↓
FileTransferHandler

五、HTTPServer 工作原理

核心入口:

httpd=HTTPServer(server_address, FileTransferHandler)

这里:

  • HTTPServer
    负责监听端口
  • FileTransferHandler
    负责处理请求

六、自定义 Handler

核心类:

classFileTransferHandler(BaseHTTPRequestHandler):

它继承:

BaseHTTPRequestHandler

重写:

do_GET()
do_POST()

七、GET 请求:返回网页

defdo_GET(self):

访问:

/

时返回 HTML 页面。

关键代码:

self.send_response(200)
self.send_header('Content-type', 'text/html; charset=utf-8')
self.end_headers()

然后:

self.wfile.write(html.encode('utf-8'))

输出网页内容。


八、POST 请求:接收上传

defdo_POST(self):

根据:

Content-Type

判断上传类型。


文本上传

application/x-www-form-urlencoded

对应:

URLSearchParams()

服务器使用:

urllib.parse.parse_qs()

解析数据。


文件上传

multipart/form-data

浏览器:

newFormData()

发送。


九、为什么不用 cgi?

Python 新版本:

cgi

已经逐渐弃用。

因此代码选择:

手动解析multipart

兼容:

  • Python 3.6
  • Python 3.13+

十、multipart 解析原理

核心:

boundary

浏览器上传的数据结构:

--boundary
Content-Disposition: form-data
...
文件内容
--boundary--

代码:

parts=data.split(b'--'+boundary.encode())

分割各部分。

然后:

filename="xxx"

提取文件名。


十一、文件安全处理

代码里做了:

safe_name=re.sub(r'[<>:"/\\|?*]', '_', name)

避免:

  • Windows 非法文件名
  • 路径字符问题

时间戳防重名

timestamp=datetime.datetime.now().strftime("%Y%m%d_%H%M%S")

生成:

image_20260516_120101.png

避免覆盖。


十二、自动获取局域网 IP

核心:

socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

通过:

connect(("8.8.8.8", 80))

获取本机出口 IP。

最终得到:

192.168.x.x

十三、前端页面设计

页面使用:

  • HTML
  • CSS
  • 原生 JavaScript

实现:

  • Tab 切换
  • 文件上传
  • AJAX 请求
  • 上传结果展示

无需:

  • Vue
  • React
  • jQuery

十四、为什么体验很好?

因为:

1. 不刷新页面

使用:

fetch()

异步上传。


2. 自动预览文本

escapeHtml()

防止 HTML 注入。


3. 移动端适配

使用:

@media (max-width: 600px)

适配手机。


十五、可以继续扩展什么?

这个项目非常适合作为:

  • Python HTTP 入门
  • 局域网工具
  • 内网共享平台
  • Web Server 学习案例

继续扩展:


1. 下载文件列表

增加:

os.listdir()

即可实现在线下载。


2. 图片预览

返回:

<img>

即可浏览图片。


3. 拖拽上传

前端监听:

dragover
drop

即可。


4. 多文件上传

<inputtype="file"multiple>

5. 上传进度条

使用:

XMLHttpRequest.upload.onprogress

6. 二维码访问

可以集成:

qrcode Python 库

自动生成手机扫码地址。


7. 用户认证

增加:

  • 密码验证
  • Token
  • Session

避免局域网任意访问。


十六、安全性提醒

当前项目适合:

  • 家庭局域网
  • 临时传输
  • 开发调试

不建议直接暴露公网。

因为:

  • 没有鉴权
  • 没有 HTTPS
  • 没有限制上传大小
  • 没有病毒检查

最新文章

随机文章