Ho un modulo con funzionalità di caricamento dei file e vorrei poter avere qualche segnalazione di errore lato client se il file che l'utente sta tentando di caricare è troppo grande, c'è un modo per verificare la dimensione del file con jQuery, o semplicemente sul client o in qualche modo postare il file sul server per controllare?Come verificare la dimensione di input del file con jQuery?
risposta
In realtà non si ha accesso al file system (ad esempio, la lettura e la scrittura di file locali), tuttavia, a causa delle specifiche Api del file HTML5, ci sono alcune proprietà del file a cui si ha accesso e la dimensione del file è una di loro.
Per l'HTML sottostante
<input type="file" id="myFile" />
provare quanto segue:
//binds to onchange event of your input field
$('#myFile').bind('change', function() {
//this.files[0].size gets the size of your file.
alert(this.files[0].size);
});
Siccome è una parte della specifica HTML5, che funziona solo per i browser moderni (v10 richieste per IE) e Ho aggiunto here maggiori dettagli e link su altre informazioni di file che dovresti sapere: http://felipe.sabino.me/javascript/2012/01/30/javascipt-checking-the-file-size/
vecchi browser supportano
essere consapevoli del fatto che i vecchi browser restituirà un valore null
per il precedente this.files
chiamata, in modo accedendo this.files[0]
solleverà un'eccezione e si dovrebbe check for File API support prima di utilizzarlo
È possibile eseguire questo tipo di controllo con Flash o Silverlight ma non con Javascript. Javascript sandbox non consente l'accesso al file system. Il controllo delle dimensioni dovrebbe essere fatto sul lato server dopo che è stato caricato.
Se si desidera passare alla rotta Silverlight/Flash, è possibile verificare che non siano installati per impostazione predefinita su un normale gestore di caricamento file che utilizza i normali controlli. In questo modo, se hanno installato Silverlight/Flash, la loro esperienza sarà un po 'più ricca.
Se si desidera utilizzare jQuery di validate
è possibile con la creazione di questo metodo:
$.validator.addMethod('filesize', function(value, element, param) {
// param = size (en bytes)
// element = element to validate (<input>)
// value = value of the element (file name)
return this.optional(element) || (element.files[0].size <= param)
});
si dovrebbe utilizzare:
$('#formid').validate({
rules: { inputimage: { required: true, accept: "png|jpe?g|gif", filesize: 1048576 }},
messages: { inputimage: "File must be JPG, GIF or PNG, less than 1MB" }
});
Questo non funziona con IE – Dan
@ Dan sì, la proprietà dimensione del file è una parte della specifiche HTML5, in modo da funzionare solo per i browser moderni (per IE sarebbe versione 10+) –
Hai usato in modo errato il 'accept' regola, cui si dovrebbe avere utilizzato la regola' extension'. ~ [La regola 'accept'] (http://jqueryvalidation.org/accept-method/) è solo per i tipi MIME. [La regola 'extension'] (http://jqueryvalidation.org/extension-method/) è per le estensioni di file. È inoltre necessario includere [il file 'additional-methods.js'] (http://cdn.jsdelivr.net/jquery.validation/1.13.1/additional-methods.js) per queste regole. – Sparky
Questo codice:
$("#yourFileInput")[0].files[0].size;
Restituisce la dimensione del file per un ingresso modulo.
On 3.6 FF e poi questo codice dovrebbe essere:
$("#yourFileInput")[0].files[0].fileSize;
Il codice pugno funziona in chrome, ma secondo non funziona per FireFox ultima. –
primo codice funzionante bene in FireFox. – Dhwani
Questo secondo codice è quello che dovevo usare per tutti i moderni (browser 2014+). – Dreamcasting
Vi metto la mia soluzione troppo, utilizzato per un FileUpload
controllo ASP.NET. Forse qualcuno lo troverà utile.
$(function() {
$('<%= fileUploadCV.ClientID %>').change(function() {
//because this is single file upload I use only first index
var f = this.files[0]
//here I CHECK if the FILE SIZE is bigger than 8 MB (numbers below are in bytes)
if (f.size > 8388608 || f.fileSize > 8388608)
{
//show an alert to the user
alert("Allowed file size exceeded. (Max. 8 MB)")
//reset file upload control
this.value = null;
}
})
});
È necessario verificare il valore di 'f = this.files [0]' o questo non funzionerà sui browser più vecchi. per esempio. 'if (f && (f.size> 8388608 || f.fileSize> 8388608))' –
<form id="uploadForm" class="disp-inline" role="form" action="" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="file">
</form>
<button onclick="checkSize();"></button>
<script>
function checkSize(){
var size = $('#uploadForm')["0"].firstChild.files["0"].size;
console.log(size);
}
</script>
ho trovato questo per essere il più facile se non si ha intenzione di presentare la forma attraverso standard di ajax/HTML5 metodi, ma ovviamente funziona con qualsiasi cosa.
NOTE:
var size = $('#uploadForm')["0"]["0"].files["0"].size;
Ciò consente di lavorare, ma non è così in cromo più, ho appena provato il codice di cui sopra e ha funzionato sia in FF e Chrome (lastest). Il secondo ["0"] è ora firstChild.
- 1. Come modificare la dimensione del pulsante del file di input?
- 2. convalida la dimensione del file prima del caricamento per tipo di input = file utilizzando angularjs
- 3. Come verificare la dimensione del file durante il caricamento
- 4. Come verificare la dimensione del file prima dell'apertura in R
- 5. Come verificare la dimensione del file in python?
- 6. Modificare la dimensione del filatore di input del numero?
- 7. Come espandere la dimensione del buffer di input di pyserial
- 8. Comando Unix per verificare la dimensione del file
- 9. ottiene la dimensione del margine di un elemento con jquery
- 10. Come caricare la dimensione del file prima del caricamento
- 11. Come ottenere la dimensione del file
- 12. JQuery Check Input File
- 13. imposta la dimensione del carattere in jquery
- 14. Come ottenere l'intervallo di input durante la modifica con jquery?
- 15. Trova la dimensione del file dietro link di download con jQuery
- 16. Modifica del valore di input del modulo con Jquery
- 17. input [type = "file"] verifica l'esistenza del file allegato con css
- 18. Unix trova la dimensione media del file
- 19. Come limitare la dimensione del file di registro in python
- 20. jQuery-UI: ridimensionabile: come aumentare la dimensione del bordo trascinabile?
- 21. Come ottenere la dimensione del file di "System.Drawing.Image"
- 22. NSFileManager - Controlla la dimensione del file?
- 23. Come controllare la dimensione dell'ingresso in .input-group con .input-group-addon (Bootstrap3)?
- 24. Jquery Impostazione valore del campo di input
- 25. Ottenere la dimensione del file in Haskell
- 26. Come recuperare la dimensione di un file prima di caricarlo?
- 27. Come limitare la dimensione del file core dump durante la generazione con GDB
- 28. Come verificare la presenza di ID usando jQuery?
- 29. maschera del tempo di input usando jquery
- 30. Come controllare la dimensione/dimensione di un grafico con ggplot2
Tutti dicono che questo non può essere fatto - eppure eccolo qui. Questo funziona. L'ho provato – Peter
non funzionerà in ie8. –
@Jeroen Sono d'accordo che non funziona per IE non rende la soluzione ideale per molte persone, ma non sta dando un voto negativo e dicendo che la risposta è inutile un po 'troppo? Ho usato questa soluzione in una grande varietà di soluzioni web aziendali che avevano lo scopo di lavorare solo in chrome e/o firefox, e alcune persone in cerca di questa soluzione potrebbero trovarsi nello stesso punto, quindi questa soluzione sarà abbastanza buona . –