Qfile.write () пишет только первые 22 мбайты больших файлов

StackOverflow https://stackoverflow.com//questions/22001245

Вопрос

У меня есть следующий код:

QNetworkAccessManager *nam = new QNetworkAccessManager(this);
QNetworkReply *re = nam->get(QNetworkRequest(QUrl("http://somesite/ai.bin")));
QEventLoop loop;
QObject::connect(reply, SIGNAL(readyRead()), &loop, SLOT(quit()));
int timeInSeconds = 10;
QTimer *idleTimer = new QTimer(this);
connect(idleTimer,SIGNAL(timeout()),&loop,SLOT(quit()));
idleTimer->setInterval(timeInSeconds *1000);
idleTimer->start();
loop.exec();

//save
QFile file("C:/a.jpg");
file.open(QIODevice::WriteOnly);
file.write(re->readAll());

ui->dbgOut->insertHtml("<font color='green'>OK</font><br>");
.

Если удаленный файл составляет 5 МБ, он работает, BT, если файл abot 50 или 500 МБ, программа сохраняется только первые 22 МБ, а процесс все еще загружает файл в фоновом режиме.

Что я делаю не так?

Это было полезно?

Решение

10 секунд может быть недостаточно, чтобы загрузить все это, в зависимости от вашего подключения к Интернету.Не используйте такой таймер.Чтобы увидеть немедленный эффект, опустите эти линии:

int timeInSeconds = 10;
QTimer *idleTimer = new QTimer(this);
connect(idleTimer,SIGNAL(timeout()),&loop,SLOT(quit()));
idleTimer->setInterval(timeInSeconds *1000);
idleTimer->start();
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top