Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как прочитать image по url в сервлете 
:(
    Опции темы
oson
Дата 4.11.2008, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 289
Регистрация: 3.3.2004
Где: Севастополь

Репутация: нет
Всего: 1



Господа.
Вот такая задачка - есть адрес у Google Map - например
Код

http://maps.google.com/staticmap?center=40.714728,-73.998672&zoom=12&size=400x400&key=12345

и возвращает он поток байтов фотографии, потому что если на странице написать
Код

<img src='http://maps.google.com/staticmap?center=40.714728,-73.998672&zoom=12&size=400x400&key=12345'/>

то вырисует именно фоографию.
Я теперь хочу этот поток байтов фотографии получать прямо в своем сервлете, так как мне надо вставить туда определенные данные (из базы данных). То есть на странице у меня чтото вроде
Код

   "<img src='pictureServlet?id=" + Id + "/>" 

А в самом PictureServlet я хочу сделать запрос по адресу
Код

http://maps.google.com/staticmap?center=40.714728,-73.998672&zoom=12&size=400x400&key=12345

и полученный поток байтов направить в HttpServletResponse.
Как это сделать?
PM MAIL   Вверх
rygel
Дата 4.11.2008, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 21.9.2007
Где: Харьков

Репутация: нет
Всего: 7



Так получишь InputStream файла и его content type:
Код

URL url = new URL("http://maps.google.com/staticmap?center=40.714728,-73.998672&zoom=12&size=400x400&key=12345");
URLConnection connection = url.openConnection();
String contentType = connection.getContentType();
InputStream inputStream = connection.getInputStream();


А далее останется лишь перекопировать байты из IS в OS:

Код

response.setContentType(contentType)

ServletOutputStream outputStream = response.getOutputStream();
.....
byte[] buffer = new byte[256];
int n = 0;
while ( (n = inputStream .read(buffer))!=-1) {
      outputStream .write(buffer, 0, n);
}


Все
PM MAIL   Вверх
necromancer
Дата 6.11.2008, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 317
Регистрация: 26.7.2006
Где: Москва

Репутация: 6
Всего: 7



что бы не изобретать велосипеды работая с потоками и не только, обратите внимания на такую компанию как apache
а именно на их пакет commons.io


--------------------
С уважением, 
                 Виталий Смык
----------------------------------------------------------------------------------------------
SCJP, SCWCD, OCA
http://dev.maryno.net/video/
PM MAIL WWW ICQ Skype   Вверх
rygel
Дата 6.11.2008, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 21.9.2007
Где: Харьков

Репутация: нет
Всего: 7



справедливо. но когда чему-либо учишься полезнее будет разобраться или хотя бы увидеть как из IS скопировать в OS,  нежели взять либу и вызвать метод copy не задумываясь о деталях. (просто мнение... автору темы виднее будет)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0414 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.