在PHP中显示活动目录中的thumbnailPhoto


Display thumbnailPhoto from Active Directory in PHP

我已经设置了一个系统来显示每个人的姓名,电子邮件地址和电话号码从活动目录,但我不能得到'thumbailPhoto'的工作。

我在互联网上搜索了一下,但没有找到这是否可能,或者至少从活动目录返回什么格式。

我目前正在使用adldap类,所以如果可以使用这个,那将是理想的。

提前感谢。

编辑:

我可以检索thumbnailPhoto属性中的数据如果我将它们直接转储到浏览器中,我会得到这样的结果

yØyaJFIFðð丫PExifII*bh~†(2Ži‡¢XCanonCanon EOS 5D Markiii . ðð2013:05:19 17:35:31š e, , è"€'€0230ð '("0"8"0"@"11"11 0100yy¢H¢P¢¤¤¤¤2013:04:1711:44:522013:04:17 11:44:52H¹o@B¬†e»dnaWµ˜:我¦®(¶'HHyØyaJFIFyUC美元。",#(7),01444年的9 = 82 & lt; .342yUC2 ! !22222222222222222222222222222222222222222222222222 ya-d"丫丫µ}!1 aqa"q2¡# B±攻击ðbr 3美元,%,’() 456789: CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ"……†‡ˆ‰Š"•——˜™š ¢£¤¥¦§¨©ª²³´µ¶·¸¹º AAAAÆCEEEOOOOO×ØUUaaaaaæceeenooooo÷øuuyA丫µw !1AQaq"2B ' ' ' ' Á #3RðbrÑ $ 4 %ñ&'()

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

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

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

<?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]); ?>" />

当您将照片数据存储到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" />