QT C ++ - FTP上传

时间:2015-09-21 12:18:49

标签: c++ qt ftp

我在QT编写简单的FTP-Upload时遇到了问题。 我目前正在使用QT 5.5,而QFtp Class已不再可用。 所以我使用了我的Visual C ++项目中的代码。

  1. 图片:Visual C ++中的代码 Code from Visual C++

  2. 图片:QT中的代码 Image: Code in QT

  3. 图片:QT中的构建错误 Image: Build Error in QT

  4. 有没有办法解决这个问题?是否有可能让QFtp在QT 5.5中运行?

    (字符串fileToUpload是文件路径)

    (字符串fileName是上传时远程计算机上文件的名称)

    提前致谢!

2 个答案:

答案 0 :(得分:2)

如Qt 5.4文档中所述,有一些附加组件提供FTP和HTTP流:

https://forum.qt.io/topic/23904/qtftp-and-qthttp-compatibility-add-ons-for-qhttp-and-qftp-classes-in-qt-5

但是,我建议你开始使用QNetworkManager来做你的FTP& HTTP访问。它的界面更复杂(基本上所有请求都是异步处理的)但是当你掌握它时,它并不那么困难。

答案 1 :(得分:0)

您的编译错误与const char*const wchar_t*的转换有关。如果您对FtpPutFileW感到满意,则可以将文件名转换为wchar_t*。这可以使用Qt QString来完成: QString::toWCharArray(wchar_t * array)将字符串转换为wchar_t数组(此函数不附加空字符)或使用直接转换:

reinterpret_cast<const wchar_t *>(qstring.utf16())

还可以使用各种方法将std::string转换为wchar_t*

如果您只需要FTP put操作,则QNetworkManager具有此功能。但是,QNetworkManager对低级别FTP的支持有限:https://stackoverflow.com/a/32568786/4023446

因此,对于其他低级FTP命令,可以手动安装Qt FTP