2010-07-05 5 views
1

Dans mon application, j'ai besoin de calculer la taille du fichier en côté client côté (avant de télécharger sur le serveur).Obtenir le fichier Attributs (côté client) en utilisant Javascript

Je veux limiter le fichier en cours de téléchargement si elle ne satisfait pas à mes exigences comme fichier taille, fichier Type ..

Est-il possible d'y parvenir dans le côté client en utilisant JavaScript?

+0

Si dans. NET - c'est l'un des meilleurs outils que j'ai utilisés http://krystalware.com/Products/SlickUpload/. Blocage des extensions, détection de la taille du fichier, barre de progression ... tout simplement génial! – Marko

Répondre

1

Dans les navigateurs prenant en charge HTML5s File API, vous pouvez maintenant.

Ceci est true for updated browsers, sans surprise IE excluded.

var files = $(this).attr('files'); 
var MAXFILESIZE = 500000; // bytes 
if (files) { 
    // <input type="file" multiple> 
    for (var i = 0; i < files.length; i++) { 
     // We can also validate files[i].type or files[i].name vs an expected file type 
     if (files[i].size > MAXFILESIZE) { 
      alert('File "'+files[i].name+'" is too big.'); 
     } 
    } 
} 

Le futur dit "bonjour"! :)

2

Cela n'est pas possible en pratique (peut-être avec un exploit Java + ActiveX dans IE) avant de soumettre le fichier avec une requête POST au serveur.

+0

Merci meder, je peux mettre en cache le type de fichier et le tester en utilisant des expressions régulières (juste une pensée), mais j'ai encore besoin de mettre en cache la taille du fichier, ce qui est impossible pour JS, peut-être rassembler tous les attributs d'un fichier en utilisant JS pure –

+1

Eh bien, vous pouvez souvent déterminer le type de fichier en vérifiant l'extension du fichier. C'est possible en utilisant une petite regexp sur le nom de fichier. –

4

Dans la grande majorité des navigateurs actuels, il n'y a aucun moyen d'accomplir ceci avec pur JS. Certains des outils de fichiers HTML5 les plus récents peuvent le permettre, mais leur support est limité.

Vous aurez besoin d'aller avec un outil Uploader basé Flash pour obtenir ces données avant téléchargement. Découvrez YUI Uploader pour vous aider à démarrer.

Je vous suggère de mettre en œuvre cette façon:

  1. prendre toutes les précautions sur le serveur, vous pouvez limiter la taille de téléchargement (un peu traite chaque technologie de serveur différemment). Toujours faire ce que les contrôles côté client peut être contournée
  2. Utilisez un fichier standard Ajouter élément d'entrée pour commencer
  3. à l'aide d'améliorer progressivement quelque chose comme Uploader YUI ou Uploadify. De cette façon, il fonctionne plus rapidement sur les fichiers qui ne correspondent pas aux utilisateurs de Flash, mais aussi fonctionne pour les téléchargements normaux car il sera également vérifié sur le serveur.
+0

+1 - Merci pour le lien Uploader. : 0) – user113716

+0

@patrick vous êtes les bienvenus! Homme, je suis juste heureux que je vous batte à une réponse;) –

+0

Merci Doug Neiner –

Questions connexes