2013-06-05 35 views
7

Tôi đã thiết lập một hệ thống để hiển thị tên, địa chỉ email và số điện thoại của mọi người từ Active Directory tuy nhiên tôi không thể lấy 'thumbailPhoto' để làm việc.Display thumbnailPhoto từ Active Directory trong PHP

Tôi đã tìm kiếm trên internet nhưng không thể tìm thấy nếu điều này là có thể hoặc ít nhất là những gì định dạng được trả về từ Active Directory.

Tôi hiện đang sử dụng lớp adldap vì vậy nếu có thể sử dụng điều này sẽ là lý tưởng.

Xin cảm ơn trước.

Edit:

tôi có thể lấy dữ liệu trong thuộc tính thumbnailPhoto và nếu tôi đổ chúng thẳng vào trình duyệt tôi nhận được một cái gì đó như thế này:

ÿØÿà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" Ya ÿÄμ} 1AQa "q2'¡ # B ± arnd $ 3br, % & '() 456789: CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ“... † ‡ ‰ s'! ‘’ • --~ ™ s ¢ £ ¤ ¥ |§¨ © ª²³'μ¶ · ¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ × ØÙÚáâãäåæçèéêñòóôõö ÷ øùúÿÄ ÿÄμw! 1AQaq "2B'¡ ± Á # 3RðbrÑ $ 4A% N & '()

Đó không phải là tất cả của nó nhưng nó là một chuỗi rất dài, tôi giả sử là một số loại chuỗi nhị phân?

+0

tôi cho rằng bạn có thể lấy nội dung của các 'thumbnailPhoto '. Bạn đã phân tích nội dung định dạng hình ảnh là gì chưa? – heiglandreas

+0

Tôi đã thêm một đoạn trích về những gì được trả lại. Về định dạng hình ảnh, tôi không biết Active Directory làm gì với hình ảnh khi người dùng thêm vào. Tôi không biết nếu nó vẫn ở định dạng họ tải lên hoặc nếu nó được xử lý theo một cách nào đó. – Sean

Trả lời

15

Đây có vẻ là tệp JPEG, vì vậy bạn có thể gửi dữ liệu đó cùng với loại mime thích hợp cho trình duyệt. Nó phải có khả năng đầu ra hình ảnh với một cái gì đó như:

<img src="data:image/jpeg;base64,<?php echo base64_encode($imageString); ?>"/> 

Nhưng nó cũng có thể là có thể lưu các tập tin của bất kỳ định dạng hình ảnh vào đó thumbnailPhoto thuộc tính. Vì vậy, tôi sẽ đưa nội dung vào một tệp tạm thời mà sau đó sẽ được phân phát trực tiếp từ máy chủ. Bạn sẽ cần phải vượt qua tập tin thông qua finfo để có được loại mime chính xác.

Vì vậy, bạn có thể làm điều gì đó như thế này:

$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

Cảm ơn bạn rất nhiều vì điều này, tôi đã chỉnh sửa mã một chút vì tôi biết nó sẽ là một hình ảnh nhưng điều này chắc chắn đã giải quyết được vấn đề của tôi và hoạt động tốt. – Sean

6

Hãy thử đoạn code dưới đây. Nó là một sự thích nghi của câu trả lời ở trên.

<?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

khi bạn lưu trữ các dữ liệu ảnh vào ldap tức là "jpegphoto" thuộc tính nó nên được thực hiện bằng cách sử dụng mã hóa base64. Đọc thuộc tính đã được giải mã khi đang bay.Do đó tôi sẽ sử dụng một cái gì đó ít đổi mã

$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; 

Đây là hình ảnh php trực tiếp ghi dụ bạn có thể trực tiếp sử dụng nó dưới thẻ img tức

<img src="example.php" /> 
Các vấn đề liên quan