2013-06-05 44 views
7

我已经设置了一个系统来显示每个人的姓名,电子邮件地址和来自Active Directory的电话号码,但是我无法使'thumbailPhoto'正常工作。从PHP中的活动目录显示缩略图图片

我在互联网上搜索过,但一直未能找到这是可能的,或者至少从Active Directory返回什么格式。

我目前使用的adldap类,所以如果有可能使用这将是理想的。

在此先感谢。

编辑:

我可以在thumbnailPhoto属性检索数据,如果我直接把它们扔掉浏览器我得到的是这样的:

ÿØÿàJFIFððÿá PExifII * BH〜†( 2Ži‡¢XCanonCanon EOS 5D Mark IIIð2013:05:19 17:35:31š,à,'“'0230ð' ''('0'8''''''11''11 0100 ÿÿ¢ H¢P¢¤¤¤2013 2013:04:17 11:44:522013:04:17 11:44:52H¹[email protected]¬† è»dnäWμ~:Ì|®(¶ ' HHÿØÿàJFIFÿÛC$' “#(7),01444'9 = 82 <.342ÿÛC 2 !!22222222222222222222222222222222222222222222222222ÿÀ-d”雅 ÿÄμ} 1AQa“q2'¡·B±ARND $ 3房, %&“()456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ“...†‡‰S'!‘’•--~™的¢¤£¥|§¨ ©ª²³'μ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿÄμw!1AQaq“2B'¡±A#$3RðbrÑ4A%N &“()

这不是全部,但它是一个很长的字符串,我假设是某种二进制字符串?

+0

我认为你可以检索“thumbnailPhoto的内容”。你分析过内容是什么图像格式? – heiglandreas

+0

我已经添加了返回的内容片段。至于图像格式,我不知道用户添加一个Active Directory对图像的影响。我不知道它是否保持它们上传的格式,或者是否以某种方式处理。 – Sean

回答

15

这似乎是一个JPEG文件,所以你应该能够将这些数据连同适当的MIME类型一起发送到浏览器。它应该是可以输出图像的东西,如:

<img src="data:image/jpeg;base64,<?php echo base64_encode($imageString); ?>"/> 

但它或许还可以到任何图像格式保存的文件thumbnailPhoto属性。因此,我会将内容放入临时文件,然后直接从服务器提供。您需要通过finfo传递文件才能获得正确的MIME类型。

所以,你可能做这样的事情:

$tempFile = tempnam(sys_get_temp_dir(), 'image'); 
file_put_contents($tempFile, $imageString); 
$finfo = new finfo(FILEINFO_MIME_TYPE); 
$mime = explode(';', $finfo->file($tempFile)); 
echo '<img src="data:' . $mime[0] . ';base64,' . base64_encode($imageString) . '"/>'; 
+0

非常感谢你这么做,我稍微调整了代码,因为我知道这将是一个图像,但这绝对解决了我的问题,并且效果很好。 – Sean

6

尝试下面的代码。这是上述答案的改编。

<?php $result = ldap_search($ad , $dn , $filter, $attributes); $aduser = ldap_get_attributes($ad, ldap_first_entry($ad,$result)); ?>

<img src="data:image/jpeg;base64,<?php echo base64_encode($aduser['thumbnailPhoto'][0]); ?>" /> 
0
当您存储照片数据到LDAP即

“jpegphoto”属性,应该使用的base64编码完成。 读取属性已经解密了。因此,我会用的东西少修改后的代码

$tempFile = tempnam(sys_get_temp_dir(), 'image'); 
file_put_contents($tempFile, $imageString); 
$finfo = new finfo(FILEINFO_MIME_TYPE); 
$mime = explode(';', $finfo->file($tempFile)); 
header("Content-Type: $mime"); 
echo $imageString; 

这是直接的PHP图像写入例如 您可以直接使用它在标签IMG即

<img src="example.php" />