Веб-страница: отображение изображения из байтового массива - PullRequest
0 голосов
/ 22 марта 2012

У меня есть изображение 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[] будет отправлено как атрибут.

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

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

Спасибо.

1 Ответ

1 голос
/ 22 марта 2012

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

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

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

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

...