使用QNetworkAccessManager通过SSH2协议上传文件

时间:2015-09-24 12:38:41

标签: qt sftp qnetworkaccessmanager

我需要在端口22上使用ssh2协议在服务器上上传图像文件。使用QNetworkAccessManger的SSH2协议在Google上也不受欢迎。这是我的代码。

QUrl uploadUrl("ssh2://192.168.10.227/var/www/html/img/"+mImgFile);

    uploadUrl.setUserName("xxxxxx");
    uploadUrl.setPassword("xxxxxx");
    uploadUrl.setPort(22);

    qDebug() << uploadUrl.toString();

    QNetworkRequest uploadReq(uploadUrl);

    mReply = mNetworkManager->put(uploadReq, &file);

    connect(mReply, SIGNAL(uploadProgress(qint64, qint64)), this, SLOT(uploadProgress(qint64, qint64)));

使用URL-scheme作为&#34; ssh2&#34;或&#34; sftp&#34;或&#34; ssh2.sftp&#34 ;;它输出协议未知。我使用奇怪的&#34; ssh2.sftp&#34;的原因是here(just a little php code to view)

我想知道ssh2是否可以与qnetworkaccessmanager一起使用?如果是,上传图像文件的URL格式是什么?

1 个答案:

答案 0 :(得分:2)

Qt中没有SSH支持,例如参见 Howto implement SFTP with Qt/QNetworkAccessManager (C++)How to easily establish an SSH connection in Qt?

QNetworkAccessManager中支持的URL方案列表可以通过QNetworkAccessManager::supportedSchemes()获取,默认Qt版本为("ftp", "file", "qrc", "http", "https", "data")(仅当找到外部OpenSSL库时才支持https ,因为它也不提供Qt)。

因此,仍然需要使用外部C库libssh2来使用本机套接字来使用SSH2协议。

我发现here有一些旧的Qt扩展LibQxt支持Qt SSH。但是,它已不再维护。