如何使用Qt / QNetworkAccessManager(C ++)实现SFTP

问题描述 投票:9回答:3

我是Qt的新手,我想为我的软件实现FTP和SFTP支持。当我用Google搜索时,我发现Qt不存在sftp库,但是QNetworkAccessManager应该可以。然后,我试图发现如何构建自定义协议或类似的协议,但没有弄清楚该怎么做。

有人知道我该怎么做吗?

谢谢,迈克尔

c++ qt sftp qnetworkaccessmanager
3个回答
10
投票

[Qt SDK中不支持SFTP,但Qt Creator实现了SFTP。

我隔离了包含SSH和SFTP的库,并在Github中创建了一个名为QSsh的新项目。该项目的目的是为任何Qt应用程序提供SSH和SFTP支持。

我已经写了一个有关如何使用SFTP上传文件的示例。看看examples/SecureUploader/

我希望它会有所帮助


1
投票

您需要为每个协议自定义实现。但是我们可以创建一个像QHttp这样的类。有几种协议具有相似的语义,但不是全部。因此,如果您想编写它,请告诉我,我会为您提供帮助。


0
投票

Qt SDK中没有SSH包装器实现。您在这里有3个选择:

  1. 使用IETF RFC和RFC4253之类的标准草案来滚动自己的自定义SSH / SFTP客户端实现。这可能不是您想要的。
  2. 直接使用任何ssh实现库,例如openssh / libssh,或编写自己的Qt / C ++包装器以备将来使用。任何具有ssh需求的相当合理的项目通常都链接到一个已经建立的ssh库,并以编程方式使用它。像Qt Creator一样,如果您在其中深入挖掘足够长的时间,您会发现前面提到的用户Paglian。依靠图书馆的风险较小,并且可以面向未来,然后再自己动手制作。
  3. 直接在命令行界面上使用openssh工具,使用QProcess就像在外壳上使用它一样。如果您不需要任何复杂的ftp操作,这是最快的方法,因为围绕CLI工具设计健壮的包装可能会有些困难。
© www.soinside.com 2019 - 2024. All rights reserved.