QFile.Write()は、大きなファイルの最初の22Mバイトのみを書き込みます

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 MBの場合は機能します。ファイルがABO 50または500MBの場合、プログラムは最初の22 Mバイトのみを保存しますが、プロセスはバックグラウンドでファイルをダウンロードします。

私は何をしていますか?

役に立ちましたか?

解決

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