2014-02-24 9 views
1

내가 다음 코드 한 대용량 파일의 첫 번째 22MBytes :QFile.write() 글을

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, 그것이 작동하는 경우 BT 파일이 50 5백메가바이트의 ABOT 경우 프로그램은 처음 22MBytes 만 저장하지만 프로세스는 백그라운드에서 파일을 계속 다운로드합니다.

내가 뭘 잘못하고 있니?

답변

1

인터넷 연결에 따라 다운로드하는 데 10 초가 충분하지 않을 수도 있습니다. 이런 식으로 타이머를 사용하지 마십시오. 즉각적인 효과를 보려면 다음 줄을 드롭하십시오.

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

매력처럼 작동합니다. 고맙습니다! 그냥 질문입니다. chunk-by-chunk 파일을 어떻게 다운로드 할 수 있는지 알고 있습니까? 문안 인사 – user3343366