[翻译] Qt QFtp功能无法被Qt 5 Network系列模块替代的说明

        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等模块。

        链接:https://stackoverflow.com/questions/14111120/qt-code-to-get-list-of-files-from-ftp-server-using-qnetworkaccessmanager

 

       

 

翻译如下:

标题: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完成该功能......

posted @ 2018-10-30 21:02  r0xFED  阅读(711)  评论(0编辑  收藏  举报