En fait, vous n'avez pas accès au système de fichiers (par exemple la lecture et l'écriture de fichiers locaux), cependant, en raison de la spécification de l'API de fichier HTML5, vous avez accès à certaines propriétés de fichier, et la taille du fichier en fait partie.
Pour le HTML ci-dessous
<input type="file" id="myFile" />
essayez ce qui suit:
//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);
});
Comme il fait partie de la spécification HTML5, il ne fonctionnera que pour les navigateurs modernes (v10 requis pour IE) et j'ai ajouté ici plus de détails et des liens sur d'autres informations de fichier que vous devriez connaître: http://felipe.sabino.me/javascript / 2012/01/30 / javascipt-vérification-de-la-taille-du-fichier /
Prise en charge des anciens navigateurs
Sachez que les anciens navigateurs renverront une null
valeur pour l' this.files
appel précédent , donc l'accès this.files[0]
lèvera une exception et vous devriez vérifier la prise en charge de l'API File avant de l'utiliser
jQuery
fichier javascript n'a pas été ajouté (ou n'a pas été chargé correctement). L'avez-vous ajouté dans lehead
de votre page?Si vous souhaitez utiliser jQuery,
validate
vous pouvez en créant cette méthode:Vous l'utiliseriez:
la source
accept
règle, là où vous auriez dû utiliser laextension
règle. ~ Laaccept
règle s'applique uniquement aux types MIME. Laextension
règle concerne les extensions de fichier. Vous devez également inclure leadditional-methods.js
fichier de ces règles.$('#formid').validate({ rules: { inputimage: { required: true, extension: "png|jpe?g|gif", filesize: 1048576 }}, messages: { inputimage: "File must be JPG, GIF or PNG, less than 1MB" } });
Ce code:
Renvoie la taille du fichier pour une entrée de formulaire.
Sur FF 3.6 et versions ultérieures, ce code devrait être:
la source
Je poste également ma solution, utilisée pour un
FileUpload
contrôle ASP.NET . Peut-être que quelqu'un le trouvera utile.la source
f = this.files[0]
ou cela échouera sur les anciens navigateurs. Par exempleif (f && (f.size > 8388608 || f.fileSize > 8388608))
Utilisez ci-dessous pour vérifier la taille du fichier et effacer si elle est supérieure,
la source
Vous pouvez faire ce type de vérification avec Flash ou Silverlight mais pas Javascript. Le bac à sable javascript n'autorise pas l'accès au système de fichiers. La vérification de la taille devra être effectuée côté serveur après son téléchargement.
Si vous souhaitez suivre la route Silverlight / Flash, vous pouvez vérifier que s'ils ne sont pas installés par défaut, ils utilisent un gestionnaire de téléchargement de fichiers normal qui utilise les contrôles normaux. De cette façon, si Silverlight / Flash est installé, leur expérience sera un peu plus riche.
la source
J'ai trouvé que c'était le plus simple si vous ne prévoyez pas de soumettre le formulaire via les méthodes standard ajax / html5, mais bien sûr, cela fonctionne avec n'importe quoi.
REMARQUES:
Cela fonctionnait, mais ce n'est plus le cas dans Chrome, je viens de tester le code ci-dessus et cela a fonctionné à la fois en FF et en chrome (le dernier). Le deuxième ["0"] est maintenant firstChild.
la source
Veuillez essayer ceci:
la source