10

我已经建立了一个系统来显示来自 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:17 11:44:52H¹o@B¬ † è»dnäWµ~:̦®(¶' HHÿØÿàJFIFÿÛC $.' ",#(7),01444'9=82<.342ÿÛC 2!!22222222222222222222222222222222222222222222222222ÿÀ–d"ÿÄ ÿĵ}!1AQa"q2'¡#B±ÁRÑð$3br‚ %&'() 456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ ^‰Š'“”•–~™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãääåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B'¡±Á #3RðbrÑ $4á%ñ&'()

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

4

3 回答 3

24

这似乎是一个 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) . '"/>';
于 2013-06-05T19:29:23.743 回答
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]); ?>" />
于 2014-09-12T13:55:34.773 回答
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" />
于 2017-05-29T08:15:14.573 回答