MyFTP — 功能介绍

一款 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 工作区

  1. 填写主机、端口、协议、用户名、密码,或从站点管理器带入
  2. 点击连接;成功后右侧列出远程目录,左侧列出本机目录
  3. 选中文件后点上传/下载 ,或将本机文件拖拽到远程栏
  4. 底部传输队列 查看进度;日志 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

  1. 打开 工作区 ,协议选 FTP ,填写主机 192.168.x.x、端口 21、用户名与密码
  2. 点击连接,确认右侧出现远程目录列表
  3. 选中远程文件,点下载 ;或选中本机文件,点上传
  4. 在底部队列查看进度,完成后本机目录自动刷新

示例 2:保存站点并重复连接

  1. 进入 站点管理器,新建站点,填写连接信息
  2. 输入密码,点保存;再次编辑时密码栏留空表示沿用已保存密码
  3. 连接,自动跳转工作区并发起连接

示例 3:SFTP 连接 Linux 服务器

  1. 协议选 SFTP ,端口通常 22
  2. 连接成功后,远程列表为 SSH 文件系统视图
  3. 支持上传、下载、删除、重命名、新建文件夹、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 端口被拦等问题,欢迎反馈服务器类型日志摘要,便于后续兼容扩展。

想了解「协议栈如何分层、传输队列如何调度、凭证如何加密」,请参阅 《原理与实现》

原文链接: https://www.itgather.com/blog/myftp-feature-intro