用 Python Flask 快速搭建一个局域网文件上传服务
·
一、前言
在日常开发或办公中,我们经常需要在不同设备之间快速传输文件。例如:从手机传照片到电脑、在同事电脑间共享文档,或者在没有云盘的环境中进行临时文件交换。
本文将带你使用 Python + Flask 框架,仅用 60 行代码,搭建一个简单、安全、可自定义的局域网文件上传服务。你只需要打开浏览器,访问指定地址,即可上传文件到你的电脑指定目录。
无需复杂的配置,无需公网IP,适合个人或小团队快速使用。
功能亮点
- 支持多种文件类型(图片、文档、压缩包等)
- 文件大小限制(默认 1000MB)
- 自动创建存储目录
- 基于桌面路径,开箱即用
- 可自定义服务器 IP 和端口
- 安全过滤文件类型,防止恶意上传
🛠️ 技术栈
- Python 3.6+
- Flask:轻量级 Web 框架
- Werkzeug:处理文件上传和安全命名
- pathlib:现代化路径操作
- os:系统交互与目录管理
📦 安装依赖
确保你已安装 Python,然后执行:
bash
pip install flask
💡 核心代码实现
以下是完整的 Python 脚本,功能完整,可直接运行:
from flask import Flask, request, flash, redirect
import os
from pathlib import Path
from werkzeug.utils import secure_filename
# 获取桌面路径
desktop_path = Path.home() / 'Desktop'
local_path = desktop_path / 'UpdateFolder' # 存储在本地电脑的文件
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = local_path
app.config['MAX_CONTENT_LENGTH'] = 1000 * 1024 * 1024 # 1000 MB limit
ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif', "gta", "bz2"}
# 检查文件格式,是否符合要求
def allowed_file(filename):
return '.' in filename and \
filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@app.route('/upload', methods=['POST'])
def upload_file():
if 'file' not in request.files:
flash('无文件部分')
return redirect(request.url)
file = request.files['file']
if file.filename == '':
flash('没有选择文件')
return redirect(request.url)
if file and allowed_file(file.filename):
filename1 = os.path.basename(file.filename)
print("得到传过来的文件名字", filename1)
# 获取文件名的最后部分(即文件名本身)
filename = os.path.basename(secure_filename(file.filename))
print(filename)
# 保存文件
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename1))
return '文件成功传输 '
else:
return '文件类型无效'
if __name__ == '__main__':
print("支持的文件格式为: ", 'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif', "gta", "bz2")
print("支持的文件大小为: ", "1000M")
remote_host = input("设定服务器IP 请输入你本地网卡的IP: ")
portStr = input("请输入你指定服务器的端口: ")
port = int(portStr)
# 获取桌面路径
desktop_path = Path.home() / 'Desktop'
local_path = desktop_path / 'UpdateFolder' # 存储在本地电脑的文件
# local_path = r'D:\AcoreFile' # 存储在本地电脑的文件 也可以直接写死一个D盘路径,没有就新建文件夹
# 检查文件夹是否存在
if not os.path.exists(local_path):
# 如果文件夹不存在,则创建它
os.makedirs(local_path)
print(f'文件夹 {local_path} 创建成功! 文件放置的地址')
else:
print(f'文件夹 {local_path} 已存在。 文件放置的地址')
app.run(host=remote_host, port=port)
🚀 使用方法
1. 运行脚本
保存代码为 file_server.py,在终端运行:
bash
python file_server.py
按提示输入你的本机局域网 IP 和 端口号。
如何查看本机 IP?
- Windows:
ipconfig→ 查看 IPv4 地址- Mac/Linux:
ifconfig或ip a
2. 上传文件
在其他设备(如手机、另一台电脑)上,使用以下方式上传:
方法一:使用浏览器(推荐)
访问:http://<你的IP>:<端口>/upload
(注意:目前代码中未提供前端页面,需使用工具上传)
方法二:使用 curl 命令
bash
curl -X POST http://192.168.1.100:5000/upload \
-F "file=@/path/to/your/file.jpg"
方法三:使用 Postman 或 Apifox
- 方法:POST
- URL:
http://<IP>:<端口>/upload - Body → form-data,Key 为
file,选择文件上传
📁 文件存储位置
上传的文件将自动保存到你电脑桌面的 UpdateFolder 文件夹中:
text
桌面/UpdateFolder/上传的文件名
你也可以修改 local_path 变量,指定其他路径,例如:
python
local_path = r'D:\AcoreFile' # Windows
# 或
local_path = '/home/user/uploads' # Linux/Mac
🔐 安全建议
- 本服务仅限局域网内使用,不要暴露在公网。
- 已通过
secure_filename防止路径穿越攻击。 - 限制了文件类型和大小,降低风险。
- 建议使用后关闭服务,避免长期运行。
🌟 扩展功能(可选)
你可以在此基础上继续优化:
- 添加前端页面(HTML + JS),支持拖拽上传
- 增加文件列表展示功能
- 支持文件下载
- 添加密码认证(如 Flask-Login)
- 日志记录上传行为
- 支持 HTTPS(使用 Flask-Talisman)
✅ 总结
通过这个小工具,你可以:
- 快速在设备间传输文件
- 学习 Flask 基础开发
- 掌握文件上传处理流程
- 构建属于自己的轻量级“内网云盘”
代码简洁、实用性强,非常适合开发者、测试人员或普通用户作为临时文件中转站。
源码已附上,复制即用!
更多推荐


所有评论(0)