2013-06-16 9 views
6

Sto cercando di mostrare al cliente un'immagine che ha selezionato:Come visualizzare l'immagine selezionata senza inviare dati al server?

<input type="file" onchange="showImage(this)"/> 

ma non riesco a leggere il valore dell'ingresso, come ho verificato here. È possibile visualizzare l'immagine?

In onchange Posso inviare il modulo al server e il server può inviare i dati indietro, ma è davvero necessario? Il client non può visualizzare i dati senza il ping-pong sul server? È un problema di sicurezza?

+0

Se stai presentando un formare in questo modo allora sì - il ping-pong al server è inevitabile. È possibile caricare l'immagine dal file system locale con l'API del file HTML5 e visualizzarla. –

risposta

13

È possibile utilizzare FileReader oggetto Web-API per questo, vedono questo frammento:

il codice HTML

<input id="src" type="file"/> // input you want to read from (src) 
<img id="target"/> // image you want to display it (target) 

il javascript

function showImage(src,target) { 
    var fr=new FileReader(); 
    // when image is loaded, set the src of the image where you want to display it 
    fr.onload = function(e) { target.src = this.result; }; 
    src.addEventListener("change",function() { 
    // fill fr with image data  
    fr.readAsDataURL(src.files[0]); 
    }); 
} 

var src = document.getElementById("src"); 
var target = document.getElementById("target"); 
showImage(src,target); 
+2

Bello. Funziona su tutti i browser? – revolver

+0

Vedi il link. Dovrebbe funzionare in tutti i principali browser e da IE10. –

+0

'var input = this' nel tuo codice non fa nulla. La variabile 'input' non viene mai utilizzata. –

Problemi correlati