2010-11-06 15 views
74

Sto provando a cavalcare l'onda HTML5 ma sto affrontando un piccolo problema. Prima di HTML5, stavamo controllando le dimensioni del file con il flash, ma ora la tendenza è evitare l'uso del flash nelle app web. C'è un modo per controllare le dimensioni del file sul lato client usando HTML5?Client Controlla la dimensione del file usando HTML5?

risposta

114

Questo funziona. Inseriscilo in un listener di eventi per quando l'input cambia.

if (typeof FileReader !== "undefined") { 
    var size = document.getElementById('myfile').files[0].size; 
    // check file size 
} 
+0

Funziona con me in IE 10, Mozilla FFx e Chrome. Grazie! – Rahnzo

+0

Non funziona per me in Chrome? https://jsfiddle.net/ffyvbm27/ –

+0

funziona bene, semplicemente non lo stai usando correttamente; accedi all'evento onchange dell'input e starai bene. – dandavis

2

"nessuna soluzione semplice e cross-browser per raggiungere questo obiettivo": Detecting file upload size on the client side?

+9

aggiungere dimensioni del server pure, ma si potrebbe anche salvare quelli con i browser moderni il dolore e controllarlo lato client. –

7

HTML5 fie api supporta la verifica della dimensione del file.

leggere questo articolo per avere maggiori informazioni sui file di api

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

<input type="file" id="fileInput" /> 


var size = document.getElementById("fileInput").files[0].size; 

simile il file API dà nome e il tipo.

0

Uploadify può caricare file con HTML5. Inoltre c'è una versione flash.

È possibile impostare i limiti per le dimensioni del file, con il parametro "fileSizeLimit".

25

La risposta accettata è in realtà corretta, ma è necessario associarla a un listener di eventi in modo che venga aggiornata ogni volta che viene modificato l'input del file.

document.getElementById('fileInput').onchange = function(){ 
    var filesize = document.getElementById('fileInput').files[0].size; 
    console.log(filesize);  
} 

Se si utilizza libreria jQuery quindi il seguente codice può venire utile

$('#fileInput').on('change',function(){ 
    if($(this).get(0).files.length > 0){ // only if a file is selected 
    var fileSize = $(this).get(0).files[0].size; 
    console.log(fileSize); 
    } 
}); 

Dato che la conversione del fileSize per visualizzare in cui mai metrica sta a voi.

+0

L'esempio di jQuery non funziona. Non sembra che tu possa usare jQuery con '.files': https://jsfiddle.net/edxvo4wa/ (l'ho scoperto io stesso quando stavo inventando una soluzione - funziona se lo cambi in' document.getElementById'). –

+1

@Chuck scusa per l'errore lì, ho aggiornato la mia risposta con quella funzionante – Ammadu

3

Personalmente, opterei per questo formato: convalida

$('#inputFile').bind('change', function(e) { 
     var data = e.originalEvent.target.files[0]; 
     // and then ... 
     console.log(data.size + "is my file's size"); 
     // or something more useful ... 
     if(data.size < 500000) { 
     // what your < 500kb file will do 
     } 
    } 
Problemi correlati