2013-06-05 114 views
7

我已經設置了一個系統來顯示每個人的姓名,電子郵件地址和來自Active Directory的電話號碼,但是我無法使'thumbailPhoto'正常工作。從PHP中的活動目錄顯示縮略圖圖片

我在互聯網上搜索過,但一直未能找到這是可能的,或者至少從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 2013:04:17 11:44:522013:04:17 11:44:52H¹[email protected]¬† è»dnäWμ~:Ì|®(¶ ' HHÿØÿàJFIFÿÛC$' 「#(7),01444'9 = 82 <.342ÿÛC 2 !!22222222222222222222222222222222222222222222222222ÿÀ-d」雅 ÿÄμ} 1AQa「q2'¡·B±ARND $ 3房, %&「()456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ「...†‡‰S'!‘’•--~™的¢¤£¥|§¨ ©ª²³'μ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿÄμw!1AQaq「2B'¡±A#$3RðbrÑ4A%N &「()

這不是全部,但它是一個很長的字符串,我假設是某種二進制字符串?

+0

我認爲你可以檢索「thumbnailPhoto的內容」。你分析過內容是什麼圖像格式? – heiglandreas

+0

我已經添加了返回的內容片段。至於圖像格式,我不知道用戶添加一個Active Directory對圖像的影響。我不知道它是否保持它們上傳的格式,或者是否以某種方式處理。 – Sean

回答

15

這似乎是一個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) . '"/>'; 
+0

非常感謝你這麼做,我稍微調整了代碼,因爲我知道這將是一個圖像,但這絕對解決了我的問題,並且效果很好。 – Sean

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