2010-11-06 9 views

Répondre

114

Cela fonctionne. Placez-le dans un écouteur d'événement lorsque l'entrée change.

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

Cela fonctionne pour moi dans IE 10, Mozilla FFx et Chrome. Merci! – Rahnzo

+0

Ne fonctionne pas pour moi dans Chrome? https://jsfiddle.net/ffyvbm27/ –

+0

fonctionne très bien, vous ne l'utilisez pas correctement; connectez-vous à l'événement onchange de l'entrée et tout ira bien. – dandavis

2

"pas de solution simple multi-navigateur pour y parvenir": Detecting file upload size on the client side?

+9

validation Ajouter de la taille du serveur ainsi, mais vous pourriez aussi bien sauver ceux avec les navigateurs modernes la douleur et vérifiez côté client aussi bien. –

7

HTML5 fie api prend en charge la vérification de la taille du fichier.

lire cet article pour obtenir plus d'informations sur le fichier api

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

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


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

fichier API donne de la même nom et le type.

0

Uploadify pouvez télécharger des fichiers avec HTML5. Il y a aussi une version flash.

Vous pouvez définir les limites de taille de fichier, avec le paramètre 'fileSizeLimit'.

25

La réponse acceptée est réellement correcte, mais vous devez la lier à un écouteur d'événement afin qu'il soit mis à jour chaque fois que l'entrée du fichier est modifiée.

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

Si vous utilisez la bibliothèque jQuery puis le code suivant peut être pratique

$('#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); 
    } 
}); 

Étant donné que la conversion du fileSize pour afficher dans lequel jamais métrique est à vous.

+0

Votre exemple jQuery ne fonctionne pas. Vous ne semblez pas être en mesure d'utiliser jQuery avec '.files': https://jsfiddle.net/edxvo4wa/ (Je l'ai découvert moi-même quand je trouvais une solution - cela fonctionne si vous le changez en' document.getElementById'). –

+1

@ Chuck désolé pour l'erreur là-bas, j'ai mis à jour ma réponse avec le travail – Ammadu

3

Personnellement, j'opter pour ce format:

$('#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 
     } 
    } 
Questions connexes