Russian Qt Forum

Qt => Работа с сетью => Тема начата: pakulo от Ноябрь 01, 2007, 18:40



Название: Как скачать картинку по http
Отправлено: pakulo от Ноябрь 01, 2007, 18:40
Доброго времени суток,
Подскажите пожалуйста, как скачать картинку по заданной ссылке, например http://site.com/10.jpg
Картинку можно или в QT сохранить в QImage например ил сохранить на диск, разницы нет...

Спасибо!


Название: Re: Как скачать картинку по http
Отправлено: Alex Custov от Ноябрь 01, 2007, 18:53
Доброго времени суток,
Подскажите пожалуйста, как скачать картинку по заданной ссылке, например http://site.com/10.jpg
Картинку можно или в QT сохранить в QImage например ил сохранить на диск, разницы нет...

Спасибо!

В Qt3:

The QUrlOperator class provides common operations on URLs.

You can obtain additional information about the URL with isDir() and info(). If a directory is to be traversed using listChildren(), a name filter can be set with setNameFilter().
A QUrlOperator can be used like this, for example to download a file (and assuming that the FTP protocol is registered):

Код:
    QUrlOperator *op = new QUrlOperator();
    op->copy( QString("ftp://ftp.trolltech.com/qt/source/qt-2.1.0.tar.gz"), "file:/tmp" );


Название: Re: Как скачать картинку по http
Отправлено: Mixolap от Ноябрь 01, 2007, 19:33
В  QT 4 так же как и любой другой url.
Смотри пример examples/network/http


Название: Re: Как скачать картинку по http
Отправлено: pakulo от Ноябрь 01, 2007, 20:23
Нужно в QT4...
Спасибо... пример смотрел, но он мне не выдал картинку...
Я понял в чем проблема... ссылка на картинку не прямая, картинку генерирует скрипт
Т.е. у меня
http://site.com/?image=aaaa.jpg
И оно пытается получить не то что нужно а просто передает http://site.com/?image

Попробую разобраться... Может у кого была подобная проблема буду благодарен за советы


Название: Re: Как скачать картинку по http
Отправлено: Kainit от Ноябрь 01, 2007, 22:32
Поскольку твоя ссылка не отдаёт картинку напрямую, а просто делает какой-то редирект, то надобно просто скачать страничку лежащую по этому редиректу, разпарсить её и из неё выделить тэги такого вида

<img src="http://ya.ru/logo.gif"width=76 height=44 border=0 alt="Яндекс">

из тегов выделить src, а это уже нормальная ссылка на требуемую картинку


Название: Re: Как скачать картинку по http
Отправлено: pakulo от Ноябрь 03, 2007, 12:15
Помогайте....
Я выяснил в чем проблема...
Данный пример не получает картинку потому что при передачи QT обрезает часть ссылки, а именно все что идет после знака ?.
У меня ссылка вида http://site.com/?image=aaaa.jpg, а QT пытается получить картинку по такой ссылке http://site.com/.

Также в ходи экспериментов удалось выяснить что есть глюки если в адресе присутствует знак %, я думал через него заменить ?.
Как исправить? Буду очень благодарен за помощь...


Название: Re: Как скачать картинку по http
Отправлено: Kainit от Ноябрь 03, 2007, 15:02
Qt никогда ничего не обрезало
смотри пример examples\network\http\ , всё работает.
если хочешь дай нормальную ссылку с вожделенной картинкой, чтобы можно было проверить...


Название: Re: Как скачать картинку по http
Отправлено: pakulo от Ноябрь 03, 2007, 19:32
Я почти разобрался... тут проблема не в картинке, а в параметрах
Вот пример... открой в браузере тебе выведет some/some/some/?value=key
http://nivenet.org.ua/some/some/some/?value=key
Сохрани КуТе и посмотри, что он сохраняет...


Название: Re: Как скачать картинку по http
Отправлено: Kainit от Ноябрь 04, 2007, 09:16
Qt ничего не сохраняет, оно совершенно справедливо говорит об ошибке 404 по этой ссылке.


Название: Re: Как скачать картинку по http
Отправлено: pakulo от Ноябрь 04, 2007, 12:14
Да, прошу прощения, ссылочка уже не работает...
Вот можно взять не картинку...
http://forum.ixbt.com/?id=78
Если сохранить через КуТе то будет сохранена главная страница...
Я уже сделал по-другому, но все же понять как с параметрами правильно работать хочу.