我已经通过OpenDJ控制面板向用户添加了一张图片,但我似乎无法检索该图片,因此我可以在网页上显示它。我找到了两个属性 thumbnailPicture 和照片,并试图通过以下方式访问它:
NamingEnumeration<?> namingEnum = ctx.search(baseFilter, "(uid="+username+")", searchControls);
if (namingEnum.hasMore ()){
SearchResult result = (SearchResult) namingEnum.next ();
Attributes attrs = result.getAttributes ();
photo=(String)attrs.get("thumbnailPicture").get() ;
}
代码没有错,因为我可以检索电子邮件地址,例如当我更改photo=(String)attrs.get("thumbnailPicture").get() ;
时
到
photo=(String)attrs.get("mail").get() ;
我注意到当通过OpenDJ控制面板添加图片时,它通过浏览按钮进行,所以我猜测路径应该存储在某个地方?
我没有收到任何错误消息(我认为因为 thumbnailPicture 和照片属性未填入OpenDJ,因此它们返回空)但我想要的是:
答案 0 :(得分:1)
我认为您可能需要提出jpegPhoto
属性?
答案 1 :(得分:1)
目录不存储图像的路径。它存储图像。
你没有理由提到你得到的错误信息,或者你真正进入这段代码的距离,这使得一个明确的答案无法实现,但是照片属性作为字节数组返回,而不是字符串,所以:
photo=(String)attrs.get("thumbnailPicture").get() ;
如果结果没有这样的属性,attrs.get("thumbnailPicture")
将返回null,因此以下.get()
会抛出NullPointerException
。如果它确实具有这样的属性及其值,那么在尝试将ClassCastException
投射到byte[]
时会得到String.
唯一可能的结论是这行代码不是'正在执行,因此photo
保持其先前值,大概是null
,这会引起您正在观察的任何行为,尽管有许多请求,但您没有告诉我们。
答案 2 :(得分:0)
对于用户图像,存在多个属性:
所以请使用以下代码:
photo=(String)attrs.get("thumbnailPhoto").get() ;
,或者
photo=(String)attrs.get("jpegPhoto").get() ;