2013-01-03 14 views
6

Tutti odiamo Internet Explorer durante la creazione di modelli HTML o la modifica di siti Web. Bene, di recente ho creato uno script di immagine PHP per nascondere la posizione dell'URL. Funziona bene per Firefox, Chrome e persino Safari.Intestazione PHP - Tipo di contenuto: image/jpeg - Non funziona per Internet Explorer

Internet Explorer si rifiuta di visualizzare l'immagine dallo script PHP. Non fornisce nemmeno le icone delle immagini spezzate. Quadrati semplicemente vuoti.

Android ha anche lo stesso problema, ma posso arrivarci un'altra volta e potrebbe essere correlato.

Ecco il mio codice per lo script immagine:

$image_id = $_GET['id']; 

include "mysql_connect.php"; 
$sql = "SELECT * FROM images WHERE code='$image_id'"; 
$result = mysql_query($sql); 
$r=mysql_fetch_array($result); 

$imagepath=$r['path']; 

// Produce proper Image 
header("Content-type: image/jpeg"); 

echo file_get_contents("$imagepath"); 

Ho cercato di alta e bassa su Google e questo sito. Impossibile trovare una fonte solida che spieghi perché Internet Explorer non sta visualizzando l'immagine.

Qualsiasi aiuto è molto apprezzato.

+0

Qual è l'output *** raw di questo script? Sembra identico ai dati JPEG sul disco? Nessuna uscita finale o precedente? – deceze

+0

Per Firefox, visualizza l'immagine. Internet Explorer mostra il codice ASCII che appare. Ho anche provato a usare include ($ imagepath); – JCastell

+1

O si sta eseguendo l'output di spazi prima o dopo i dati dell'immagine oppure manca un'intestazione di lunghezza del contenuto. Hai anche problemi di SQL injection con questo script. – datasage

risposta

8

Il nome dell'intestazione Content-Type è scritto con una lettera maiuscola T. Non sono sicuro se questo è il problema, ma alcuni browser potrebbero non riconoscere l'intestazione Content-Type quando è scritta con una t minuscola. Pertanto, si dovrebbe usare:

header("Content-Type: image/jpeg"); 

Un'altra cosa che potrebbe essere un problema, è quando si tenta di visualizzare un'immagine che non è un jpeg, ma un png o gif, mentre si dà l'image/jpeg Content digitare l'intestazione. Pertanto, è necessario assicurarsi di fornire il tipo di contenuto corretto al browser.

+0

Risolto il capitale T. Al momento sto solo testando con JPEG. – JCastell

2

Internet Explorer utilizza il tipo mime image/pjpeg. Si utilizza pjpeg per IE e jpeg per altri browser.

header("Content-Type: image/pjpeg"); 

Fonte: image/pjpeg and image/jpeg

+0

Internet Explorer ha bisogno di immagine/pjpeg come tipo di contenuto solo per i jpeg codificati progressivamente –

+0

L'ho letto da qualche parte e l'ho provato. Ho provato di nuovo. Ancora senza fortuna. – JCastell

+0

L'ho provato ma ancora fallito! –

0

Impostare l'intestazione di lunghezza del contenuto.

header("Content-Length: " . filesize($imagepath)); 
+0

Buon suggerimento, l'ho aggiunto un po 'di tempo fa quando Datasage lo raccomandava. Non ci sono nemmeno spazi bianchi finali. – JCastell

-2

Penso di sapere qual è il problema!

IE prevede di utilizzare image/jpeg e non image/jpg. prova questo: Intestazione ("Content-Type: image/jpeg");

infatti tutti i browser si adattano così! non devi più preoccuparti!

Problemi correlati