2012-03-22 70 views
0

我有一个图像byte[],这byte[]来自LDAP [Oracle Open LDAP身份验证提供程序],我需要显示此图像到页面中。网页:从字节数组显示图像

我怎样才能做到这一点?

我可以使用javax.faces.context.ResponseWriterbyte[]或者我应该从javax.faces.context.FacesContext提取java.io.OutputStream一个实例,写byte[]到页面。

如果这些方法中的任何一个是可能的,那么我可以或许可以创建自定义的JSF标签,以显示图像,并尝试在javax.faces.render.Renderer,其中byte[]将是encodeBegin(FacesContext context, UIComponent component)方法执行映像创建作为属性发送。

我可以为此使用Servlet吗?其实我不知道我是否可以从af:imagesource属性中调用一个Servlet。

如果我得到您的建议,这对我非常有帮助。

谢谢。

回答

1

我有一个图像byte [],这个byte []来自LDAP [Oracle Open LDAP Authentication Provider],我需要将这个图像显示到页面中。

您需要在HTTP级别考虑这一点。 不包含图像(至少除非你直接嵌入数据,这对于非微小图像几乎总是一个坏主意)。它包含一个URL的图像。

您应该生成一个img标记,并带有相应的href,这将允许您在浏览器发出请求时获取数据。这应该几乎可以肯定是一个单独的servlet,为了简单起见 - 理想情况下对包含“合理”文件名(对图像有合理扩展名)的请求作出响应。

此时,您获取图像的数据,并将其写入Writer而不是OutputStream作为响应,因为它是二进制数据。

+0

谢谢。我的理解是创建一个自定义标签 - >使用writer来启动img tag->将url添加到href属性到servlet->关闭标签,并在该servlet的doGet中使用outputstream编写图像。我对吗? – 2012-03-22 17:27:14

+0

@TapasBose:是的,没错。 href应该只有足够的信息来获取数据,例如在URL中添加一个ID。您不需要将图像本身作为创建页面的一部分来获取。 – 2012-03-22 17:34:56

+0

谢谢。我会尽力实施它,并会让你知道。 – 2012-03-22 17:43:08