在Websphere Portal

时间:2016-11-10 15:23:33

标签: ldap websphere-portal

我有一个要求,我需要在使用PUMA API从LDAP搜索后显示用户的详细信息。

我正在麻烦地显示用户的jpegPhoto。

这就是我正在做的事情: 首先我通过使用以下方式查询用户: PumaLocator.findUsersByAttribute(uid,user);

之后我们得到一个用户列表对象。 对于每个用户,我们获取所有以Map形式的属性。

我在检索jpegPhoto时获得以下值:

map.get(“jpegPhoto”) - > [B @ 7a2f8a54

似乎Puma API返回二进制字符串。有谁知道如何在portlet中显示它?

非常感谢任何帮助。谢谢

3 个答案:

答案 0 :(得分:0)

我认为这更像是一个byte[]数组而不是一个字符串。

您可以将此二进制文件base64编码为已编码的字符串,并在HTML图像标记中使用它。

byte[] photoBytes = (byte[]) map.get("jpegPhoto");
String encodedPhoto = org.apache.commons.codec.binary.Base64.encodeBase64(photoBytes);

然后,也许在JSP中(示例假定范围为encodedPhoto的JSTL变量):

<img src="data:image/jpeg;base64,${encodedPhoto}"/>

答案 1 :(得分:0)

执行此操作的方法是通过门户网站服务servlet访问映像,而不是使用您自己的servlet:/wps/um/secure/users/profiles/[oid]/jpegPhoto,在其中使用用户的ObjectID替换[oid]。可以使用IdentificationMgr.getIdentification().serialize(user.getObjectID())

获取此ID字符串

您可以使用/wps/um/secure/currentuser/profile/jpegPhoto

访问的当前用户的照片

答案 2 :(得分:0)

Portal以字节数组的形式提供数据。它永远不会给你URL。 您可以编写一个将此字节数组写入输出流的servlet。 将该servlet URL用作标记的src。它将在浏览器上开始渲染。

仅供参考,您无法将字节数组打印到浏览器并期望将其视为图像。 图像或任何其他文件必须作为资源而非内容。