Загрузить файл по протоколу 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. Однако это больше не поддерживается.