2012-03-15 11 views
5

Voglio trasmettere un'immagine jpg in linea come una stringa codificata base64, tuttavia quando faccio questo:file_get_contents mostra uscita imprevisto durante la lettura di un file

$contents = file_get_contents($filename); 
print "<img src=\"data:image/jpg;base64,".$contents."\"/>"; 

Dove $filename è un file di testo locale l'immagine base64 con. L'uscita è la seguente:

<img src="data:image/jpg;base64,/9j/4A..... (the rest of the file)...." /> 

E obiously l'immagine non è reso, ma da dove viene  viene? Non è nel file di testo. Se rimosso, l'immagine viene visualizzata correttamente.

+0

cosa ottieni var_dump ($ content); ? – Milap

risposta

9

È un Unicode Byte-Order Mark. Il file è stato salvato con un editor che ha aggiunto il BOM per indicare che il file è codificato come UTF-8. Quindi quei byte sono effettivamente nel file, ma un editor di testo non lo mostrerà poiché non è testo. Per memorizzare questo tipo di dati, ti consigliamo di rimuovere la BOM. Il modo più semplice sarebbe quella di configurare il vostro editor di non aggiungere la distinta, ma se non si ha influenza sul processo di creazione del file che si poteva per on-the-fly nello script troppo:

print "<img src=\"data:image/jpeg;base64,".ltrim($contents, "\xEF\xBB\xBF")."\"/>"; 
Problemi correlati