一、前言

在日常开发或办公中,我们经常需要在不同设备之间快速传输文件。例如:从手机传照片到电脑、在同事电脑间共享文档,或者在没有云盘的环境中进行临时文件交换。

本文将带你使用 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 基础开发
  • 掌握文件上传处理流程
  • 构建属于自己的轻量级“内网云盘”

代码简洁、实用性强,非常适合开发者、测试人员或普通用户作为临时文件中转站。


源码已附上,复制即用!

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐