Загрузить файл по протоколу SSH2 с помощью QNetworkAccessManager

Мне нужно загрузить файл изображения на сервер, используя протокол ssh2 на порт 22. Протокол SSH2 с QNetworkAccessManger также не популярен в 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-схемой в виде "ssh2" или "sftp" или "ssh2.sftp"; это выводит, что протокол неизвестен. И причина, по которой я использовал странно выглядящий "ssh2.sftp", здесь (просто небольшой php-код для просмотра).

Я хочу знать, можно ли вообще использовать ssh2 с qnetworkaccessmanager? Если да, какой правильный URL-формат для загрузки файла изображения?

1 ответ

Решение

В Qt нет поддержки SSH, например, смотрите Как реализовать SFTP с Qt/QNetworkAccessManager (C++) и Как легко установить SSH-соединение в Qt?

Список поддерживаемых схем URL в QNetworkAccessManager может быть получен QNetworkAccessManager::supportedSchemes() то есть ("ftp", "file", "qrc", "http", "https", "data") в выпусках Qt по умолчанию (https поддерживается, только если найдена внешняя библиотека OpenSSL, так как она также не поставляется с Qt).

Таким образом, все еще необходимо использовать внешнюю библиотеку C libssh2 для работы с протоколом SSH2 с использованием собственных сокетов.

Здесь я обнаружил, что существует некоторое старое расширение Qt LibQxt с поддержкой Qt SSH. Однако это больше не поддерживается.

Другие вопросы по тегам