我有一个要求,我需要在使用PUMA API从LDAP搜索后显示用户的详细信息。
我正在麻烦地显示用户的jpegPhoto。
这就是我正在做的事情: 首先我通过使用以下方式查询用户: PumaLocator.findUsersByAttribute(uid,user);
之后我们得到一个用户列表对象。 对于每个用户,我们获取所有以Map形式的属性。
我在检索jpegPhoto时获得以下值:
map.get(“jpegPhoto”) - > [B @ 7a2f8a54
似乎Puma API返回二进制字符串。有谁知道如何在portlet中显示它?
非常感谢任何帮助。谢谢
答案 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())
您可以使用/wps/um/secure/currentuser/profile/jpegPhoto
答案 2 :(得分:0)
Portal以字节数组的形式提供数据。它永远不会给你URL。 您可以编写一个将此字节数组写入输出流的servlet。 将该servlet URL用作标记的src。它将在浏览器上开始渲染。
仅供参考,您无法将字节数组打印到浏览器并期望将其视为图像。 图像或任何其他文件必须作为资源而非内容。