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

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

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: Скачивание файла с http сервера  (Прочитано 20726 раз)
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #15 : Июнь 28, 2011, 00:44 »

если б не хватало библиотеки, приложение бы матюкнулось об этом еще во время запуска и не работало бы совсем
Заблуждаетесь. На отсутствие dll-плагинов Qt не матюкается.

Не приложили qico4.dll? Вот вам программа без иконок.

Не приложили *sql*.dll? Вот вам программа с неработающими (просто возвращающими ошибку) запросами.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4732



Просмотр профиля WWW
« Ответ #16 : Июнь 28, 2011, 01:12 »

буду знать, спасибо. но в данном случае я подразумевал более существенные библиотеки - например, файл мог бы не качаться из-за отсутствия QtNetwork4.dll, но скрин как раз показывает, что приложение бы не работало совсем
Записан

Изучением 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
popper
Гость
« Ответ #17 : Июнь 28, 2011, 09:08 »

Код:
QString basePath = "http://repo.inmac.org/";
QString named;

...
void Downloader::httpFinished(QNetworkReply *reply)
{
        QFile file("../Resources/"+named);
        if (file.open(QIODevice::WriteOnly))
        {
           ....
}

запускаю проект в Qt - файл качаеться
запускаю программу, ничего не качается

в чем ошибка?

Возможно, в Creator'е приложение запускается из каталога проекта, а при запуске исполняемого файла из ../<project name>-build-desktop, поэтому относительный путь к Resources/ не совпадает, и файл на запись не открывается
Записан
Whiplash
Гость
« Ответ #18 : Июнь 28, 2011, 09:27 »

Проверь версию библиотеки. Может, твоя прога хватает какую-то устаревшию dll-ку где-нить в системном каталоге.
Записан
dangreen
Гость
« Ответ #19 : Июнь 28, 2011, 19:23 »

Если под виндой то скорее всего не находит дрова, покиньте их в папку с бинарником (когда запускаете в Qt Creator то он дрова подкидывает, а если с бинарника то прога не находит их). На Linux в этом плане проще конечно, и так все находится

у меня Mac OS X
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4732



Просмотр профиля WWW
« Ответ #20 : Июнь 28, 2011, 19:57 »

у меня на маке тоже все работает и все загружается
Записан

Изучением 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
niag
Гость
« Ответ #21 : Июль 11, 2011, 11:43 »

заметил интересную (и несколько печальную для меня) вещь. в стандартном примере http-клиента файлы формата *.gz (например вот http://www.teleguide.info/download/new3/xmltv.xml.gz) скачиваются битые (разархивировать не возможно). попросил знакомого проверить у себя - та же фигня.   есть подозрение, что в реализации http в Qt не учтен content-type для подобного вида файлов.

как вы думаете, в чем дело? а то вопрос довольно важный для меня, хотелось бы докопаться до истины
Записан
dangreen
Гость
« Ответ #22 : Август 23, 2011, 13:24 »


 не могу сделать функцию в классе котораябы отслеживала скачался ли файл, подскажите как мне реализовать такое?
Записан
Rem Norton
Гость
« Ответ #23 : Сентябрь 15, 2011, 16:49 »

заметил интересную (и несколько печальную для меня) вещь. в стандартном примере http-клиента файлы формата *.gz (например вот http://www.teleguide.info/download/new3/xmltv.xml.gz) скачиваются битые (разархивировать не возможно). попросил знакомого проверить у себя - та же фигня.   есть подозрение, что в реализации http в Qt не учтен content-type для подобного вида файлов.

как вы думаете, в чем дело? а то вопрос довольно важный для меня, хотелось бы докопаться до истины

В приложении класс для работы с http. Правда он (класс) предназначен для использования из скрипта, но и так нормально работает. Файлы *gz, *.bz2, *.zip качает нормально. Реализация проста и понятна.
« Последнее редактирование: Сентябрь 15, 2011, 16:50 от Rem Norton » Записан
dangreen
Гость
« Ответ #24 : Ноябрь 29, 2011, 18:49 »

а ктонить знает как сделать синхронное скачивание файла?)
Записан
dangreen
Гость
« Ответ #25 : Ноябрь 30, 2011, 15:37 »

народ ну помогите
Записан
thechicho
Гость
« Ответ #26 : Ноябрь 30, 2011, 16:36 »

Код
C++ (Qt)
QNetworkAccessManager qnam;
QNetworkReply *reply = qnam.get(QNetworkRequest(QUrl("http://www.prog.org.ru")));
QEventLoop loop;
connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
loop.exec();
 
QString answer = reply->readAll();
//qDebug() << answer;
 
QFile file(QDir::currentPath() + "/test.html");
file.open(QIODevice::WriteOnly);
file.frite(answer.toUtf8());
file.close;
Записан
dangreen
Гость
« Ответ #27 : Декабрь 01, 2011, 03:55 »

Код
C++ (Qt)
QNetworkAccessManager qnam;
QNetworkReply *reply = qnam.get(QNetworkRequest(QUrl("http://www.prog.org.ru")));
QEventLoop loop;
connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
loop.exec();
 
QString answer = reply->readAll();
//qDebug() << answer;
 
QFile file(QDir::currentPath() + "/test.html");
file.open(QIODevice::WriteOnly);
file.frite(answer.toUtf8());
file.close;

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

Код
C++ (Qt)
   QNetworkAccessManager qnam;
   QNetworkReply *reply = qnam.get(QNetworkRequest(QUrl("http://download.trigen.pro/"+path+fname)));
   QEventLoop loop;
   connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
   loop.exec();
 
   QFile file("./EasyKitAssistant.app/Contents/"+fname);
   if (file.open(QIODevice::WriteOnly))
   {
           file.write(reply->readAll());
           file.flush();
           file.close();
   }
Записан
thechicho
Гость
« Ответ #28 : Декабрь 01, 2011, 10:21 »

// только часть где сохраняется в файл я по своему сделал
ололо, эта часть к синхронной работе отношения не имеет.
я те для наглядности ее накатал, т.к. qDebug() << answer; почему-то не всегда выводит в Qt Creator'e код страницы, видимо там лимит есть.
Записан
thechicho
Гость
« Ответ #29 : Декабрь 01, 2011, 10:25 »

ахаха, сам он сделал Веселый
у kambaly код скоммуниздил и говорит, что его ахаха Веселый
Код
C++ (Qt)
   if (file.open(QIODevice::WriteOnly))
   {
           file.write(reply->readAll());
           file.flush();
           file.close();
   }
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


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