使用 QNetworkAccessManager 可以實現 Ftp 的上傳/下載功能(參考:Qt之FTP上傳/下載),但有些原本 QFtp 有的功能 QNetworkAccessManager 卻沒有提供,例如:list、cd、remove、mkdir、rmdir、rename 等。這種情況下,就不得不使用 QFtp,值得慶幸的是 QFtp 一直在維護,只需要下載源碼自行編譯即可使用。
- 簡述
- QFtp
- 下載
- 配置
- 使用
-
QFtp
下載
從 GitHub 下載 QFtp:
或者使用命令下載 :
完成之后,可以看到 qtftp 中包含源碼及示例。

配置
下面,以 MSVC為例。
打開 qtftp.pro,將默認配置:
CONFIG += static
CONFIG -= shared改為:
CONFIG += staticlib
CONFIG += shared這樣,生成
*.dll的同時也會生成*.lib。編譯 QFtp,完成之后會在 lib 文件夾下生成
*.lib、*.dll、*.prl文件。
- 將 Qt5Ftpd.lib、Qt5Ftp.lib、Qt5Ftpd.prl、Qt5Ftp.prl 拷貝至 D:\Qt\Qt5.5.1\5.5\msvc2013\lib。
- 將 Qt5Ftpd.dll、Qt5Ftp.dll 拷貝至 D:\Qt\Qt5.5.1\5.5\msvc2013\bin。
- 將 qftp.h、qurlinfo.h 拷貝至 D:\Qt\Qt5.5.1\5.5\msvc2013\include\QtNetwork,並新建一個名為 QFtp 的文件(沒有后綴名),然后用本寫入
#include "qftp.h"。
完成之后,就可以使用 QFtp 了。
使用
在 pro 中添加 QFtp 庫:
CONFIG(debug, debug|release) { LIBS += -lQt5Ftpd } else { LIBS += -lQt5Ftp }- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
例如,如果要連接並登錄到 FTP 服務器,這是簡單的實現:
#include <QFtp> // ... QFtp *ftp = new QFtp(parent); ftp->connectToHost("192.168.***.***", 21); // 主機:192.168.***.*** 端口號:21 ftp->login("wang", "123456"); // 用戶名:wang 密碼:123456 // ...- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
首先使用 connectToHost() 連接 FTP 服務器,然后通過 login() 登錄到 FTP 服務器。登錄成功之后,就可以調度其他操作(例如:list()、cd()、get()、put()、remove()、mkdir()、rmdir()、rename() 和 rawCommand())了。
