2013-06-05 10 views
7

Ho impostato un sistema per visualizzare nome, indirizzo e-mail e numero di telefono di tutti da Active Directory, tuttavia non riesco a far funzionare la "thumbailPhoto".Visualizzazione miniaturaFoto da Active Directory in PHP

Ho cercato su Internet, ma non sono stato in grado di trovare se questo è possibile o per lo meno quale formato viene restituito da Active Directory.

Attualmente sto usando la classe adldap, quindi se è possibile utilizzarlo sarebbe l'ideale.

Grazie in anticipo.

Edit:

posso recuperare i dati nell'attributo thumbnailPhoto e se li discarica direttamente al browser che ottenere qualcosa di simile:

ÿØÿà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¬ † E »dnäWμ~: Ì|® (¶ ' HHÿØÿàJFIFÿÛC $' " # (7), 01444'9 = 82 < .342ÿÛC 2 !! 22222222222222222222222222222222222222222222222222ÿÀ-d" ya ÿÄμ} 1AQa "q2'¡ # B ± Arnd $ 3br, % & '() 456789: CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ“... † ‡ ‰ Š'! ‘’ • --~ ™ s ¢ £ ¤ ¥ |§¨ © ª²³'μ¶ · ¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ × ØÙÚáâãäåæçèéêñòóôõö ÷ øùúÿÄ ÿÄμw! 1AQaq "2B'¡ ± a # $ 3RðbrÑ 4A% n & '()

Questo non è tutto ma è una stringa molto lunga, presumo che sia una sorta di stringa binaria?

+0

Suppongo che è possibile recuperare il contenuto del 'thumbnailPhoto '. Hai analizzato quale formato di immagine è il contenuto? – heiglandreas

+0

Ho aggiunto uno snippet di ciò che viene restituito. Riguardo al formato dell'immagine, non so cosa faccia Active Directory all'immagine quando un utente ne aggiunge uno. Non so se rimane nel formato che caricano o se viene elaborato in qualche modo. – Sean

risposta

15

Questo sembra essere un file JPEG, quindi dovresti essere in grado di inviare tali dati insieme al tipo mime appropriato al browser. Dovrebbe essere possibile uscita quell'immagine con qualcosa di simile:

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

Ma potrebbe anche essere possibile salvare i file di qualsiasi formato di immagine in quella thumbnailPhoto attributo. Pertanto, inserisco il contenuto in un file temporaneo che verrà poi servito direttamente dal server. È necessario passare il file tramite finfo per ottenere il tipo mime corretto.

Così si potrebbe fare qualcosa di simile:

$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

Grazie mille per questo, ho ottimizzato leggermente il codice perché sapevo che sarebbe stata un'immagine ma questo risolve definitivamente il mio problema e funziona alla grande. – Sean

6

Prova il codice qui sotto. È un adattamento della risposta sopra.

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

quando si memorizzano i dati della foto in LDAP vale a dire "jpegPhoto" attribuirlo dovrebbe essere fatto utilizzando la codifica Base64. La lettura dell'attributo è già decodificata al volo.Quindi vorrei usare qualcosa di meno modificato il codice

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

Questa è un'immagine diretta php esempio scrittura è possibile utilizzare direttamente sotto tag img cioè

<img src="example.php" />