2012-01-17 1 views
8

Sto cercando di creare un uploader di immagini MOLTO semplice in html5.html5 Caricamento immagine

<input type="file" multiple=""/> 

tutto vorrei fare è visualizzare ciò che viene caricato senza l'utilizzo di PHP o nulla. Potrei usare un codice simile a questo?

<img src="WHATEVER WAS UPLOADED"/> 

Grazie!

+0

Possibile duplicato di: http://stackoverflow.com/questions/5256620/can-i-preview-the-image-file-who-uploaded-by-user-in-the-browser –

risposta

0

È possibile archiviarlo con file HTML5 Api.

seguente tutorial dovrebbe iniziare: Reading local files in JavaScript

+0

ma la lettura di file locali tutorial usa il lettore di file, che non funziona per IE. Funziona per il resto dei browser [vedere qui] (http://caniuse.com/filereader) –

4

ho trovato

http://www.html5rocks.com/en/tutorials/file/dndfiles/ 

piuttosto utile.

se non volete spingere l'immagine ad un server (Presumo che ciò dalla tua domanda), si può solo aggiornare l'immagine a livello locale:

<style> 
    .thumb { 
    height: 75px; 
    border: 1px solid #000; 
    margin: 10px 5px 0 0; 
    } 
</style> 

<input type="file" id="files" name="files[]" multiple /> 
<output id="list"></output> 

<script> 
    function handleFileSelect(evt) { 
    var files = evt.target.files; // FileList object 

    // Loop through the FileList and render image files as thumbnails. 
    for (var i = 0, f; f = files[i]; i++) { 

    // Only process image files. 
    if (!f.type.match('image.*')) { 
     continue; 
    } 

    var reader = new FileReader(); 

    // Closure to capture the file information. 
    reader.onload = (function(theFile) { 
     return function(e) { 
      // Render thumbnail. 
      var span = document.createElement('span'); 
      span.innerHTML = ['<img class="thumb" src="', e.target.result, 
         '" title="', escape(theFile.name), '"/>'].join(''); 
      document.getElementById('list').insertBefore(span, null); 
    }; 
     })(f); 

     // Read in the image file as a data URL. 
     reader.readAsDataURL(f); 
    } 
    } 

    document.getElementById('files').addEventListener('change', handleFileSelect, false); 

</script> 

o somesuch.

+0

È possibile modificare questo per accettare solo una singola immagine (cioè non più immagini) e rimuovere il ciclo di trattamento? 'files' è usato in più posti e non sono sicuro che si riferisca alla variabile' files' o id 'files' o al nome' files' quindi non sono stato in grado di fare quella modifica. – user1063287

+0

Questo sembra funzionare per un singolo caricamento e anteprima dell'immagine ed è basato sul codice precedente http://jsfiddle.net/rwone/4n8HW/ – user1063287

+0

Ulteriori spiegazioni e altro codice possono essere trovati da questo link: https: // www. html5rocks.com/en/tutorials/file/dndfiles/ – domdambrogia