Russian Qt Forum

Qt => Работа с сетью => Тема начата: alexandros от Декабрь 05, 2011, 16:14



Название: QNetworkReply или скачка файлов из инета
Отправлено: alexandros от Декабрь 05, 2011, 16:14
Пишу браузер, хочу сделать закачку файлов
тут на форуме нашел код для скачки файлов

Код
C++ (Qt)
void onDownLoadFile(QNetworkReply *reply){
       qWarning("Hello");
       QString fileName = reply->url().toString();
               fileName.remove(0, fileName.lastIndexOf('/') + 1); // оставить только имя файла
               QFile file(fileName);
               if (file.open(QIODevice::WriteOnly))
               {
                   qDebug()<<reply->readAll();
                   file.write(reply->readAll());
                       file.flush();
                       file.close();
               }
 
               reply->deleteLater();
               reply = 0;
   }
 
 

он работает относительно, создается файл имя и расширение правильное но вот только он нулевой длины. Никакие данные в него не пишутся в чем причина?


Название: Re: QNetworkReply или скачка файлов из инета
Отправлено: kambala от Декабрь 05, 2011, 17:57
закомментируй qDebug()<<reply->readAll();


Название: Re: QNetworkReply или скачка файлов из инета
Отправлено: alexandros от Декабрь 05, 2011, 18:59
нет дело не в  нем
я сделал закачку путем добавления
Код
C++ (Qt)
networkAccess = new QNetworkAccessManager(this);
connect(networkAccess,SIGNAL(finished(QNetworkReply*)),this,SLOT(onDownLoadFile(QNetworkReply*)));
 
 
webView->page()->setNetworkAccessManager(networkAccess);
 

но теперь у меня почему то качается все при открытии страницы тупо появляется куча ненужных файлов



Название: Re: QNetworkReply или скачка файлов из инета
Отправлено: qt_user от Декабрь 05, 2011, 23:46
нет дело не в  нем
я сделал закачку путем добавления
Код
C++ (Qt)
networkAccess = new QNetworkAccessManager(this);
connect(networkAccess,SIGNAL(finished(QNetworkReply*)),this,SLOT(onDownLoadFile(QNetworkReply*)));
 
 
webView->page()->setNetworkAccessManager(networkAccess);
 

но теперь у меня почему то качается все при открытии страницы тупо появляется куча ненужных файлов


так и должно быть ты установил нетворк менеджер для страницы, когда она загружается появляется сигнал finished(QNetworkReply*))
и менеджер пытается загрузить все что есть на странице, kambala правильно указал что надо закомментить
qDebug()<<reply->readAll(); и скажу тебе почему:
Код:
QNetworkReply is a sequential-access QIODevice, which means that once data is read from the object, it no longer kept by the device. 
It is therefore the application's responsibility to keep this data if it needs to.

документация и не больше