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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как скачать картинку по http  (Прочитано 12792 раз)
pakulo
Гость
« : Ноябрь 01, 2007, 18:40 »

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

Спасибо!
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #1 : Ноябрь 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" );
Записан
Mixolap
Гость
« Ответ #2 : Ноябрь 01, 2007, 19:33 »

В  QT 4 так же как и любой другой url.
Смотри пример examples/network/http
Записан
pakulo
Гость
« Ответ #3 : Ноябрь 01, 2007, 20:23 »

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

Попробую разобраться... Может у кого была подобная проблема буду благодарен за советы
Записан
Kainit
Гость
« Ответ #4 : Ноябрь 01, 2007, 22:32 »

Поскольку твоя ссылка не отдаёт картинку напрямую, а просто делает какой-то редирект, то надобно просто скачать страничку лежащую по этому редиректу, разпарсить её и из неё выделить тэги такого вида

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

из тегов выделить src, а это уже нормальная ссылка на требуемую картинку
« Последнее редактирование: Ноябрь 01, 2007, 22:34 от Kainit » Записан
pakulo
Гость
« Ответ #5 : Ноябрь 03, 2007, 12:15 »

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

Также в ходи экспериментов удалось выяснить что есть глюки если в адресе присутствует знак %, я думал через него заменить ?.
Как исправить? Буду очень благодарен за помощь...
Записан
Kainit
Гость
« Ответ #6 : Ноябрь 03, 2007, 15:02 »

Qt никогда ничего не обрезало
смотри пример examples\network\http\ , всё работает.
если хочешь дай нормальную ссылку с вожделенной картинкой, чтобы можно было проверить...
Записан
pakulo
Гость
« Ответ #7 : Ноябрь 03, 2007, 19:32 »

Я почти разобрался... тут проблема не в картинке, а в параметрах
Вот пример... открой в браузере тебе выведет some/some/some/?value=key
http://nivenet.org.ua/some/some/some/?value=key
Сохрани КуТе и посмотри, что он сохраняет...
Записан
Kainit
Гость
« Ответ #8 : Ноябрь 04, 2007, 09:16 »

Qt ничего не сохраняет, оно совершенно справедливо говорит об ошибке 404 по этой ссылке.
Записан
pakulo
Гость
« Ответ #9 : Ноябрь 04, 2007, 12:14 »

Да, прошу прощения, ссылочка уже не работает...
Вот можно взять не картинку...
http://forum.ixbt.com/?id=78
Если сохранить через КуТе то будет сохранена главная страница...
Я уже сделал по-другому, но все же понять как с параметрами правильно работать хочу.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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