我已经设置了一个系统来显示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á%ñ&'()
这不是全部,但它是一个非常长的字符串,我假设是某种二进制字符串?
答案 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" />