В моем проекте мне нужно загрузить простой.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.
Я никогда не использовал функцию write для записи в QFile
. Попробуйте использовать следующий подход:
QFile file(aPathInClient+"\\"+fileInfo.fileName());
file.open(QIODevice::WriteOnly);
QTextStream out(&file);
out << "This file is generated by Qt\n";
EDIT: Выше было просто проверить, правильно ли записывается файл. Теперь, когда он был проверен, вы можете попробовать:
out << reply->readAll();