В моем проекте мне нужно скачать простой файл .txt. Я создал функцию для загрузки файла на основе URL:
void MainWindow::downloadFile(const QString &url, const QString &aPathInClient)
{
QNetworkAccessManager* m_NetworkMngr = new QNetworkAccessManager(this);
QNetworkReply *reply = m_NetworkMngr->get(QNetworkRequest(QUrl(url)));
QEventLoop loop;
connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
loop.exec();
QUrl aUrl(url);
QFileInfo fileInfo=aUrl.path();
QFile file(aPathInClient+"\\"+fileInfo.fileName());
file.open(QIODevice::WriteOnly);
file.write(reply->readAll());
delete reply;
}
Когда моя программа запускается, файл создается с правильным именем файла, но файл пуст. Имя файла может быть получено только моей программой, если он подключен к веб-странице. Что я забыл? Я не получаю ошибок при сборке и включил все необходимые библиотеки.
Спасибо 🙂
РЕДАКТИРОВАТЬ:
Все хорошо, моя проблема заключалась в том, что моя ссылка использовала https вместо http.
Я никогда не использовал функцию записи для записи в QFile
, Попробуйте следующий подход:
QFile file(aPathInClient+"\\"+fileInfo.fileName());
file.open(QIODevice::WriteOnly);
QTextStream out(&file);
out << "This file is generated by Qt\n";
РЕДАКТИРОВАТЬ: выше было просто проверить, правильно ли записывается файл в или нет. Теперь, так как это было проверено, вы можете попробовать:
out << reply->readAll();
Других решений пока нет …