Skip to content

Repository files navigation

FTP Server 项目

提供 FTP 协议服务与 Web 文件管理界面的 Python 项目

Python Flask License

支持浏览器浏览/上传/下载、命令行 FTP 客户端与经典 FTP 服务

功能特性快速开始文档贡献指南

功能特性

🌐 Web 界面 (web_server.py)

  • 📁 目录浏览 - 类似传统 FTP 索引页的简洁界面
  • ⬆️ 多文件上传 - 支持批量拖拽上传,单文件最大 100MB
  • ⬇️ 文件下载 - 一键下载任意文件
  • 📂 文件夹管理 - 新建文件夹、删除文件/文件夹
  • 🔒 安全防护 - 路径穿越防护、文件名安全过滤
  • 🚫 禁用缓存 - 确保文件列表实时更新
  • 🎨 自定义界面 - 带有动态信息框和网站图标

📡 FTP 服务 (ftp_server.py)

  • 🔐 多种认证方式 - 支持匿名登录和用户名密码认证
  • 📤 文件传输 - 标准的 FTP 协议支持
  • ⚙️ 灵活配置 - 自定义端口、根目录、用户权限

💻 命令行客户端 (ftp_cli.py)

  • 🎯 简单易用 - 交互式命令行操作
  • 📋 完整功能 - ls、mkdir、rm、upload、download、rename、pwd、cd

项目结构

ftp-server/
├── web_server.py      # Flask Web 文件管理服务(推荐日常使用)
├── ftp_server.py      # 标准 FTP 协议服务(pyftpdlib)
├── ftp_cli.py         # FTP 命令行客户端
├── start_server.sh    # 优化的服务器启动脚本(自动查找可用端口)
├── requirements.txt   # Python 依赖
├── ftp_root/          # 默认文件根目录(自动创建)
├── templates/         # Web 界面模板
│   ├── index.html
│   ├── mkdir.html
│   └── delete_confirm.html
├── static/            # 静态资源
│   └── favicon.ico    # 网站图标
└── docs/              # 项目文档
    ├── API.md
    └── ARCHITECTURE.md

快速开始

1. 安装依赖

cd ftp-server
python3 -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -r requirements.txt

2. 启动 Web 界面(推荐)

方式一:使用启动脚本(推荐)

chmod +x start_server.sh
./start_server.sh

启动脚本会:

  • ✅ 自动检测并停止已运行的服务进程
  • 🔍 自动查找可用端口(默认 8000,被占用则自动递增)
  • 🎨 彩色输出日志信息
  • 🚀 优化的进程管理

方式二:直接启动

python web_server.py --port 5001

浏览器访问:**http://127.0.0.1:5001**(或脚本显示的端口)

  • 支持:浏览目录、上传文件、下载文件、新建文件夹、删除文件/文件夹
  • 支持多文件同时上传
  • 开发时加 --debug 可自动重载模板:python web_server.py --port 5001 --debug

3. 启动经典 FTP 服务(可选)

python ftp_server.py --port 2121
  • 使用 FTP 客户端(FileZilla、命令行 ftp 等)连接 ftp://localhost:2121
  • 匿名登录:用户名 anonymous,密码任意

4. 使用命令行客户端(连接 FTP 服务)

需先启动 ftp_server.py,然后:

python ftp_cli.py --host localhost --port 2121 --user admin --password admin123 ls
python ftp_cli.py upload ./local.txt
python ftp_cli.py download remote.txt

Web 服务参数

参数 说明 默认值
--host 监听地址 0.0.0.0
--port 端口 5000
--root 文件根目录 ./ftp_root
--debug 调试模式(模板/代码变更自动重载)

示例:

python web_server.py --port 5001 --root /path/to/share --debug

FTP 服务参数

参数 说明 默认值
--host 监听地址 0.0.0.0
--port FTP 端口 2121
--root FTP 根目录 ./ftp_root
--user 登录用户名
--password 登录密码
--no-anonymous 禁止匿名登录 默认允许匿名

命令行客户端 (ftp_cli) 命令

在与 FTP 服务配合使用时,支持:

  • ls [path] — 列出目录
  • mkdir <name> — 创建目录
  • rm <path> — 删除文件或目录
  • upload <local> [remote] — 上传文件
  • download <remote> [local] — 下载文件
  • rename <old> <new> — 重命名
  • pwd — 显示当前目录
  • cd <path> — 切换目录

依赖

  • flask ≥ 3.0 — Web 界面
  • pyftpdlib ≥ 1.5.9 — FTP 服务(仅在使用 ftp_server.py 时需要)

安全与使用建议

  • 默认配置仅适合本地或内网使用。
  • 生产环境请修改 web_server.py 中的 secret_key,并考虑使用 HTTPS 与 WSGI 服务器。
  • FTP 服务建议仅在可信网络使用,或配合 VPN/防火墙;可参考 pyftpdlib 文档配置 FTPS。

更多文档

演示截图

Web 界面

项目预览图

启动服务后,浏览器访问 http://localhost:5000 即可看到类似传统 FTP 站点的文件索引页面:

  • 📂 清晰的目录结构展示
  • 📊 文件大小和修改时间显示
  • ⬆️ 拖拽上传文件
  • 🗑️ 安全的文件删除确认

贡献指南

欢迎提交 Issue 和 Pull Request!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 提交 Pull Request

许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件

联系方式

如有问题或建议,欢迎提交 Issue


如果这个项目对你有帮助,请给一个 ⭐️ Star!

Made with ❤️ by Python & Flask

About

Python FTP 服务器 with Web 界面 - 简单易用的文件共享解决方案

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages