9
votes

Avertissez l'utilisateur qu'un fichier est trop gros avant le téléchargement

Pour augmenter l'expérience utilisateur, je voudrais avertir l'utilisateur que le fichier est trop gros (disons> 8M) avant d'envoyer le fichier entier (qui peut prendre un certain temps en raison de la taille et de la connexion client). Tous types de champs peuvent être «pré-validés» côté client pour une meilleure expérience utilisateur, mais je suis bloqué sur le problème de la taille du fichier.

Y a-t-il une solution à ce problème?

[modifier] Je suis également ouvert à APC pour PHP, qui comporte le RFC 1867. Je ne sais pas s'il est possible d'annuler le téléchargement du formulaire si nous détectons la taille est trop grande. J'attribuerai certainement à Bounty si quelqu'un me montre comment le faire.


0 commentaires

4 Réponses :


2
votes

Voici une solution simple à celle

http: / /wwww.kavoir.com/2009/01/Check-for-file-Size-with-javascript-before-uploading.html

Changez-le pour correspondre à vos besoins

Mais méfiez-vous qu'il a été signalé qu'il ne fonctionne pas dans certains navigateurs, cela pourrait avoir besoin de changements.


1 commentaires

Oui, cela ne fonctionne que dans IE. Qu'en est-il de Firefox, Opera, Chrome et Safari?



5
votes

Vous pouvez utiliser l'API de fichier dans de nouveaux navigateurs qui ne sont pas 9 ou plus tôt. J'ai trouvé ce tutoriel avec des googling: http://www.html5rocks.com/tatudials/file / dndfiles /

En outre, la référence MDC est ici: https://developer.mozilla.org/fr/fr / Dom / fichier

Malheureusement, je ne pense pas qu'il y ait un moyen dans toutes les versions d'IE. La réponse de Flakron couvre 6 et 7, il ressemble, mais je ne suis pas sûr d'environ 8 et je ne connais pas l'API IE. Vous auriez probablement besoin d'aller avec un UPLODER basé sur le plugin (Flash, Silverlight ou Java).


2 commentaires

Les plugins ont des dépendances "fortes". Je voudrais l'éviter si possible. Cela dit, le téléchargeur Flash ne serait pas une mauvaise solution (avec une baisse pour une entrée de fichier "classique", bien sûr).


Dans HTML5rocks.com/Tutorials/file/dndfiles a une entrée de fichier de démonstration. Vérifié simplement et fonctionne également avec IE10 (Windows7), il semble donc qu'il s'agisse d'une manière recommandée pour le courant et en particulier dans les prochaines productions.



1
votes

Y a-t-il une solution à ce problème?

Je pense que vous allez finir par regretter de choisir une taille "trop ​​grosse" pour avertir, car la vitesse de transfert est la véritable détermination du débit.

Il est préférable de simplement montrer le temps estimé à l'achèvement avec une option d'annulation. Un thermomètre de progrès est bien aussi. De cette façon, l'utilisateur peut décider si cela prendra trop de temps, quelle que soit la taille de fichier ou la vitesse de connexion, et vous ne devrez jamais revenir en arrière et modifier la limite "trop ​​grosse" choisie lorsque de grands téléchargements se transforment en futurs tâches mineures dus à l'inévitable performance augmente.


5 commentaires

Comment connaîtriez-vous le temps estimé à l'achèvement de HTML avec un téléchargement HTTP? Le serveur ne sait pas la taille du fichier jusqu'à ce que le navigateur ait fini de télécharger l'intégralité du fichier?


Sauf s'il a un vrai "trop ​​gros" sur le backend.


Oui, HTML Contrôle d'un téléchargement HTTP n'est pas une interface graphique agréable. Essayez Google.com/search?q=upload+Progress


Le tout est de ne pas effectuer le transfert si le fichier est trop grand et d'avertir l'utilisateur avant de pouvoir ne pas perdre de temps.


"Trop grand" est subjectif. Qu'est-ce qui est trop gros pour l'utilisateur A pourrait être minuscule pour l'utilisateur B, alors ne boguez pas l'utilisateur B avec des avertissements inapplicables.



6
votes

Que diriez-vous de ce téléchargeur flash? http://swfupload.org/

Cela semble convaincant

  • dégradra gracieusement au formulaire de téléchargement HTML normal si Flash ou JavaScript est indisponible
  • Control Filesize avant de télécharger Démarre

    Puisqu'il est open source si vous voulez que vous puissiez combiner la dégradation gracieuse avec l'autre HTML5 et que seules des solutions pour couvrir la plupart des installations de navigateur: http://code.google.com/p/swfupload/


2 commentaires

+1 pour swfupload. Malgré la nature flash (même si à peine tout le monde a un support flash ...), c'est le seul composant riche en vedette complète que j'ai trouvé il y a quelques années (qu'un applet Java signé ...) qui fonctionne très bien et ne fonctionne pas imposer une interface utilisateur prédéfinie. Vous devez également ajouter que SWFUpload dispose de télécharger une surveillance progressive, peut sélectionner plusieurs fichiers à la fois et dispose d'une file d'attente de téléchargement avec une limite de taille possible, etc.


+1 et cela fonctionne dans tous les grands navigateurs et dispose d'une large gamme de gestionnaires de rappel!