Comment implémenter la barre de progression du téléchargement de fichiers sur le Web?

J'aimerais afficher quelque chose de plus significatif que le gif animé alors que les utilisateurs téléchargent un fichier sur mon application Web. Quelles possibilités ai-je?

Edit: J'utilise .Net, mais ça ne me dérange pas si quelqu'un me montre une version agnostique plateforme.

Voici quelques versions de ce que vous recherchez pour certaines kits d'outils Java courants.

Si vous êtes intéressé de savoir comment tout cela fonctionne généralement client-site, voici:

Toutes les solutions relient le formulaire via javascript et modifient la cible des formes vers un IFRAME nouvellement créé et invisible. Ensuite, ils sont libres d'utiliser AJAX pour demander un état du fichier à partir du serveur.

L'astuce IFRAME est nécessaire car tous les scripts exécutés dans la fenêtre qui effectue le téléchargement se bloqueront jusqu'à ce que la requête soit terminée, date à laquelle le fichier est complètement téléchargé.

Téléchargement de fichier ASP.NET avec barre de progression en temps réel

http://mattberseth.com/blog/2008/07/aspnet_file_upload_with_realti_1.html

J'ai essayé diverses techniques et j'ai eu le plus de succès avec SWFUpload .

Vous créez et interagissez avec un objet SWFUpload à l'aide de Javascript, mais utilise un fichier Flash (caché) pour la sélection du fichier, le téléchargement et la surveillance de la progression du téléchargement. Vous pouvez spécifier une large gamme de gestionnaires d'événements Javascript ( uploadStarted , uploadProgress , uploadError etc.) que le Flash appellera lors de la progression du téléchargement en la rendant très flexible. Il implémente également une file file, donc ça fonctionne bien pour les fichiers simples ou multiples.

Des liens:

  • Documentation API
  • Demos
  • Téléchargements

Une bonne aide spécifique à .NET pour faire des barres de progression peut être trouvée dans les articles du magazine MSDN de Dino Esposito en juillet et août dernier:

Feedback contextuel avec AJAX (juillet '07)
Annulation des tâches du serveur avec ASP.NET AJAX (août '07)

Un bon exemple de ce fait sans utiliser Ajax est donné à CodeProject par Nilesh Thakkar .

JQuery UI Progressbar – http://jqueryui.com/demos/progressbar/