Russian Qt Forum
Ноябрь 23, 2024, 23:53 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QNetworkReply или скачка файлов из инета  (Прочитано 4323 раз)
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;
   }
 
 

он работает относительно, создается файл имя и расширение правильное но вот только он нулевой длины. Никакие данные в него не пишутся в чем причина?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Декабрь 05, 2011, 17:57 »

закомментируй qDebug()<<reply->readAll();
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
alexandros
Гость
« Ответ #2 : Декабрь 05, 2011, 18:59 »

нет дело не в  нем
я сделал закачку путем добавления
Код
C++ (Qt)
networkAccess = new QNetworkAccessManager(this);
connect(networkAccess,SIGNAL(finished(QNetworkReply*)),this,SLOT(onDownLoadFile(QNetworkReply*)));
 
 
webView->page()->setNetworkAccessManager(networkAccess);
 

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

Записан
qt_user
Гость
« Ответ #3 : Декабрь 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.

документация и не больше
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.175 секунд. Запросов: 22.