Я пытаюсь загрузить приложение из URL-адреса, обычно EXE или Jar, но это не должно сильно меняться. У меня есть все, что работает в потоке, но я не думаю, что это изменит ситуацию (если это даст мне знать).Qt Загрузить файл - QNetworkAccessManager, не получая данные
So Do_Download - это моя функция, которая создает менеджера, устанавливает URL-адрес и запрашивает и выполняет get. Затем я пытаюсь подключить готовый сигнал к слоту, который напишет файл.
void DownloadManager::Do_Download() {
QNetworkAccessManager *netManager = new QNetworkAccessManager(this);
QUrl url(install_mirror); //istall_mirror is the URL provided by user
QNetworkRequest req(url);
QNetworkReply *reply = netManager->get(req);
connect(reply, SIGNAL(finished()), this, SLOT(writeData()));
}
Функция writeData проверяет наличие ошибок, а при отсутствии ошибок записывает данные в файл.
void DownloadManager::writeData() {
QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender());
if (reply) {
if (reply->error() == QNetworkReply::NoError) {
QFile file(location);
if(file.open(QIODevice::WriteOnly)) {
file.write(reply->readAll());
} else {
errorMessage = "Error writing downloaded file for mirror installation";
}
} else {
//get http status code
int httpStatus = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
errorMessage = "HTTP Error code while downloading from mirror: " + httpStatus;
}
reply->deleteLater();
} else {
errorMessage = "Error downloading file from installation mirror";
}
}
Проблема в том, что данные не записываются. Он просто создает файл 0Kb. Я попытался добавить слот прогресса загрузки, чтобы я мог видеть, что происходит с получением данных. Поэтому я добавил это к моему методу Do_Download.
connect(reply, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(DL_Progress(qint64,qint64)));
void DownloadManager::DL_Progress(qint64 recieved, qint64 total) {
std::cout << recieved << "/" << total << endl;
}
Выходные отображает один раз как 0/01
Что я делаю неправильно?
У Вас есть объект QCoreApplication и цикл событий выполняющийся? –