2012-03-22 3 views
0

У меня есть изображение byte[], это byte[] происходит от LDAP [Oracle Open LDAP Authentication Provider], и мне нужно показать это изображение на странице.Веб-страница: отображение изображения из массива байтов

Как я могу это сделать?

Могу ли я использовать javax.faces.context.ResponseWriter писать byte[] или я должен извлечь экземпляр java.io.OutputStream из javax.faces.context.FacesContext и записать byte[] на страницу.

Если какой-либо один из этих методов можно, то я могу может быть в состоянии создать пользовательский JSF тег, чтобы отобразить изображение, и попытаться выполнить создание образа в encodeBegin(FacesContext context, UIComponent component) способе javax.faces.render.Renderer, где byte[] будет отправить как атрибут.

Могу ли я использовать сервлет для этой цели? На самом деле я не знаю, могу ли я вызвать сервлет из атрибута sourceaf:image.

Это будет очень полезно для меня, если я получу ваше предложение.

Спасибо.

ответ

1

У меня есть изображение byte [], этот байт [] поступает из LDAP [Oracle Open LDAP Authentication Provider], и мне нужно показать это изображение на странице.

Вам необходимо подумать об этом на уровне HTTP. страница не содержит изображения (по крайней мере, если вы не собираетесь вставлять данные напрямую, что почти всегда является плохой идеей для нехитрых изображений). Он содержит адрес .

Вы должны создать тег img с соответствующим href, который позволит вам получать данные, когда браузер делает запрос на это. Это почти наверняка будет отдельным сервлетом, для простоты - идеально отвечающим на запросы, которые включают «разумное» имя файла (с разумным расширением для изображения).

В этот момент вы извлекаете данные для изображения и записываете их не в Writer, а в OutputStream для ответа, так как это двоичные данные.

+0

спасибо. Я понимаю, что создать пользовательский тег-> использовать сценарий для запуска img tag-> добавить атрибут href с url в servlet-> закрыть тег и в doGet этого сервлета записать изображение с помощью выходного потока. Я прав? –

+0

@TapasBose: Да, это так. Href должен * просто * быть достаточно информации для извлечения данных, например. поместите идентификатор в URL. Вам не нужно получать изображение непосредственно в процессе создания страницы. –

+0

Спасибо. Я попытаюсь реализовать его и дам вам знать. –

Смежные вопросы