在PHP中显示Active Directory中的thumbnailPhoto

时间:2013-06-05 10:44:33

标签: php active-directory ldap adldap

我已经设置了一个系统来显示Active Directory中的每个人的姓名,电子邮件地址和电话号码,但是我无法让'thumbailPhoto'工作。

我在互联网上搜索过,但无法找到这是否可行,或者至少从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:04:17   11:44:522013:04:1711:44:52H¹@B¬†   E»dnäWμ~:Ì|®(¶”   HHÿØÿàJFIFÿÛC$。'   ”,#(7),01444'9 = 82<.342ÿÛC   2 !!22222222222222222222222222222222222222222222222222ÿÀ-d“YA   ÿÄμ}!1AQa“q2'¡·B±ARND $ 3房,   %安培;'() 456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ“...†‡‰S”‘’•--~™š£¢¥¤©|§¨·ª²³'μ¶×¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ÷ØÙÚáâãäåæçèéêñòóôõöøùúÿÄ   ÿÄμw!1AQaq“2B”¡#3RðbrÑ$4á%ñ&'()

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

3 个答案:

答案 0 :(得分:21)

这似乎是一个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) . '"/>';

答案 1 :(得分: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]); ?>" />

答案 2 :(得分:0)

当您将照片数据存储到ldap即“jpegphoto”属性时,应该使用encode 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 ie。

下使用它
<img src="example.php" />