Показать thumbnailФото из Active Directory в PHP

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

Это не все, но это очень длинная строка, я предполагаю, что это своего рода двоичная строка?

Solutions Collecting From Web of "Показать thumbnailФото из Active Directory в PHP"

Кажется, это 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" />