Я создал систему для отображения имени пользователя, адреса электронной почты и номера телефона из 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ƒ" … † ‡ ‰ Š "¤ ¤ ¨ š š ¢ ¤ ¤ ¤ ¨ ¨ ¨ ¨ ¨ ¨ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á Á)))))))))))))))))))))))))))))))))))
Это не все, но это очень длинная строка, я предполагаю, что это своего рода двоичная строка?
Кажется, это 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" />