一款 Windows 桌面 FTP 客户端:双栏浏览本机与远程目录,支持 FTP / FTPS / SFTP 上传下载,站点凭证本地 DPAPI 加密保存。基于 Electron + 自研 C++ 协议栈,不依赖第三方 FTP SDK。
一、软件概览
MyFTP 面向日常文件传输与内网运维场景:左侧浏览本机文件,右侧浏览远程服务器,选中后一键上传/下载,或直接拖拽到另一栏。连接、列表、传输、站点管理均在本机完成,密码不上传云端。
核心能力:
- 多协议:FTP 明文、FTPS(显式/隐式 TLS)、SFTP(SSH)
- 双栏工作区:本机/远程目录同步浏览,支持多选、右键菜单、拖拽传输
- 站点管理器:分组保存主机、端口、协议与账号;密码 DPAPI 加密存盘
- 传输队列:并发上传/下载、实时进度与速度、取消与清除已完成
- 安全提示:明文 FTP 连接时界面显示警告,引导使用 FTPS 或 SFTP

工作区:连接栏 + 双栏文件浏览 + 底部传输面板;明文 FTP 时会显示安全警告
二、工作原理(简述)
MyFTP 分两层:Electron 界面 负责展示与交互;C++ 动态库(sdtech_myftp) 负责真实的网络协议。界面通过 IPC 调用 DLL 的 C ABI,DLL 内部自研 TCP、FTP 命令通道、LIST 解析,以及 FTPS(OpenSSL)和 SFTP(libssh2)会话。
| 协议 | 说明 | 适用场景 |
|---|---|---|
| FTP | 控制通道 + 数据通道;默认明文 | 可信内网、老设备 |
| FTPS | 在 FTP 上叠加 TLS(AUTH TLS 或隐式 SSL) | 公网或需加密的 FTP |
| SFTP | SSH 子系统,与 FTP 无关 | 现代 Linux 服务器、云主机 |
被动模式(PASV)默认开启,适合 NAT/防火墙后的客户端。若列表或传输异常,可在设置 中切换 PASV/PORT(见 [3.5 设置](#3.5 设置))。
三、主要功能
3.1 页面导航
左侧竖栏可在五个页面间切换;标题栏显示当前页名称,支持最小化/最大化/关闭。
| 页面 | 说明 |
|---|---|
| 工作区 | 快速连接、双栏文件浏览、传输面板 |
| 站点管理器 | 保存/编辑/删除站点,一键连接并跳转工作区 |
| 帮助 | 上手步骤、协议说明、PASV 与防火墙提示 |
| 设置 | 并发数、速度限制、PASV、代理等 |
| 关于 | 版本与产品信息 |
3.2 工作区
- 填写主机、端口、协议、用户名、密码,或从站点管理器带入
- 点击连接;成功后右侧列出远程目录,左侧列出本机目录
- 选中文件后点上传/下载 ,或将本机文件拖拽到远程栏
- 底部传输队列 查看进度;日志 Tab 查看连接与命令摘要
右键菜单(本机/远程)支持:打开目录、上传、下载、删除、重命名、CHMOD(远程)等。
明文 FTP 警告:连接 FTP(非 FTPS/SFTP)时,连接栏下方显示黄色安全提示,建议改用 FTPS 或 SFTP。
3.3 站点管理器
- 按分组组织站点(如「默认」「工作」「备份」)
- 保存主机、端口、协议、用户名、远程初始路径
- 密码以 Windows DPAPI 加密写入
sites.json,界面仅显示「已保存」掩码 - 连接时自动保存并跳转到工作区发起连接

站点管理器:左侧分组列表 + 右侧编辑表单;支持新建、复制、删除与一键连接
3.4 传输与日志
| 功能 | 说明 |
|---|---|
| 并发传输 | 默认最多 3 个任务并行(可在设置中调整) |
| 进度与速度 | 后端 SIZE + 字节计数;前端约 200ms 轮询刷新 |
| 取消 | 单任务取消 |
| 清除已完成 | 从队列移除已完成/失败/已取消项 |
| 日志 | 连接、登录、PASV、LIST 等命令摘要 |

传输队列:方向图标、源/目标路径、进度条、速度、剩余时间与状态;支持全部暂停与清除已完成
3.5 帮助
帮助页汇总三步上手 、FTP / FTPS / SFTP / FXP 协议说明、PASV 与防火墙提示,以及当前版本支持/不支持能力清单。

帮助页:协议说明与 MyFTP 支持范围;底部为隐私与明文 FTP 提示
3.6 设置
| 选项 | 说明 |
|---|---|
| 最大并发传输 | 同时进行的 upload/download 任务数 |
| 上传/下载限速 | 0 表示不限速 |
| 被动模式 (PASV) | NAT 后客户端建议开启 |
| 冲突策略 | 覆盖、跳过、重命名或询问 |
| 代理 | HTTP / SOCKS5(可选) |
| 证书策略 | FTPS 严格校验或允许自签 |

设置页:传输、网络与 FTPS 证书相关选项;本机默认路径在此配置
3.7 关于
关于页显示产品名称、版本号与 SDTech 客户端工程信息。

关于页:MyFTP 版本与 06_MyFTP 工程标识
3.8 隐私与安全
- 站点与凭证仅存本机 (
data/sites.json+ DPAPI) - 不上传账号密码至任何服务器(除您连接的 FTP/SFTP 主机)
- 明文 FTP 会在工作区显式警告;公网场景请使用 FTPS 或 SFTP
- 本机列表默认过滤隐藏文件 (如
desktop.ini)
四、使用示例
示例 1:快速连接内网 FTP
- 打开 工作区 ,协议选 FTP ,填写主机
192.168.x.x、端口21、用户名与密码 - 点击连接,确认右侧出现远程目录列表
- 选中远程文件,点下载 ;或选中本机文件,点上传
- 在底部队列查看进度,完成后本机目录自动刷新
示例 2:保存站点并重复连接
- 进入 站点管理器,新建站点,填写连接信息
- 输入密码,点保存;再次编辑时密码栏留空表示沿用已保存密码
- 点连接,自动跳转工作区并发起连接
示例 3:SFTP 连接 Linux 服务器
- 协议选 SFTP ,端口通常
22 - 连接成功后,远程列表为 SSH 文件系统视图
- 支持上传、下载、删除、重命名、新建文件夹、CHMOD
五、安装与运行
运行环境
- 系统:Windows 10 / 11(64 位)
- 网络:能访问目标 FTP/FTPS/SFTP 主机;防火墙需放行数据通道(PASV 时尤其注意)
- 暂不支持:macOS / Linux 客户端、FXP 服务器直传、WebDAV
从安装包运行
下载并安装发布包后,从开始菜单或桌面快捷方式启动 MyFTP 即可。首次运行会在程序目录下创建 data 目录存放站点配置。
从源码构建(开发者)
powershell
cd Self/2026/06_MyFTP/Frontend
npm install
npm run backend # 编译 C++ DLL 并复制到 Frontend/dll
npm run dev # Vite + Electron 开发调试
npm run dist # 打包 NSIS 安装程序
构建依赖 prebuilt/x64-windows 中的 vcpkg 预编译库(OpenSSL、libssh2、SDTech::Net 等)。
博文截图(开发者)
自动截取各页面配图并写入 Docs/Blogs/06_MyFTP-功能介绍/images:
powershell
cd Self/2026/06_MyFTP
pip install -r scripts/requirements-screenshot.txt
python scripts/auto_screenshot.py --dev
六、技术概要
- 界面:Electron 28 + React 18 + TypeScript,无边框自定义标题栏
- 后端 :C++17 DLL
sdtech_myftp,C ABI 导出(koffi FFI) - 协议实现 :自研
FtpCommandChannel/FtpListParser;FTPS 用 OpenSSL;SFTP 用 libssh2 - IPC :主进程
mf:*通道(connect、listRemote、transferPoll、sitesSave 等) - 测试:GTest 覆盖 PASV 解析、LIST 行解析等
七、结语
MyFTP 把「连上服务器、看目录、传文件」做成一个本地、可控的桌面工具:站点一次保存、双栏拖拽传输、队列看进度。若您在使用中遇到某类服务器 LIST 格式异常、PASV 端口被拦等问题,欢迎反馈服务器类型 与日志摘要,便于后续兼容扩展。
想了解「协议栈如何分层、传输队列如何调度、凭证如何加密」,请参阅 《原理与实现》。