https://www.cnblogs.com/r0xFED/p/9879338.html
Qt4下Qt提供了QFtp類以完成FTP相關的操作,但是Qt5不再提供QFtp類了,取而代之的是QNetworkAccessManager,QNetworkRequest和QNetworkReply等類。那麼Qt5的network模塊能否替代QFtp等類呢?
測試後發現,如果利用QNetworkRequest封裝諸如: ftp://ftp.jaist.ac.jp/pub/qtproject/official_releases/jom/jom_0_6_08.zip以通過FTP下載某一個特定的文件是可以做到的;但是類似原int QFtp::list(const QString & dir = QString())這些接口的功能就無法完成了。
在Stack Overflow上找了答案,確認Qt5下的QNetworkAccessManager等模塊無法替代QFtp等模塊。
翻譯如下:
標題:Qt編碼並利用QNetworkAccessManager從FTP服務器上獲取文件列表
問題:我正在用Qt編寫一個FTP客戶端程序,用的是Qt 5.0版本。
我已經通過QNetworkAccessManager實現了上傳和下載文件功能,之所以不用QFtp是因爲Qt5下QFtp已被廢除了。
現在我想編碼實現從FTP服務器獲取文件列表,我知道在QFtp類下的具體做法但是不知道怎樣利用QNetworkAccessManager完成這個功能,給個建議吧。
回答:如果你想從一個遠程目錄獲取文件列表的話,你還是需要用QFtp,因爲目前QNetworkAccessManager還無法做到。
QFtp已經作爲一個獨立模塊分離出去了,但是你可以從Gitorious倉庫中下載:https://qt.gitorious.org/qt/qtftp (點擊 "Source tree",然後點擊"Download master..."以下載該模塊)。
注:實際上到了Qt 5.10了還是無法完成對QFtp的替代,我目前考慮利用libcurl完成該功能......