2010-07-12 7 views
7

J'ai remarqué que le nouvel objet XMLHttpRequest supporte un événement 'onprogress' dans firefox. Est-il possible d'utiliser une partie des nouvelles API du fichier HTML5 pour obtenir une barre de progression de téléchargement sans aucune modification côté serveur?Progression du téléchargement de fichiers HTML5 - côté client seulement

+0

Vous devriez lire cet article pour avoir plus de connaissances sur le côté client, http://www.html5rocks.com/en/tutorials/file/dndfiles/ –

Répondre

2

Je crois en principe oui, même si je ne l'ai pas encore essayé.

Ce qui va être un problème est que XMLHttpRequest#send() prend une chaîne Unicode et l'encode comme UTF-8. Cela ne vous donne pas la possibilité d'envoyer des binaires purs, et la plupart des fichiers binaires comme les images ne vont pas être des séquences UTF-8 valides. Donc probablement vous utiliseriez ce que la spécification FileAPI appelle une "chaîne binaire" (octets traités comme ISO-8859-1, donc chaque charCodeAt correspond à un octet), recodé en UTF-8. Cela se traduirait par environ 50% de plus qu'un téléchargement de fichier ordinaire. Vaut-il le téléchargement lent pour obtenir le rapport d'étape?

(Dieu, si seulement les navigateurs avaient une meilleure interface utilisateur pour montrer comment le téléchargement se passait, aucune des bêtises sans fin/Flash/Java/ActiveX n'aurait jamais été nécessaire.) Allez, les fournisseurs de navigateur, est un bon gros info popup avec une barre de progression vraiment trop à demander?)

+1

AFAIK, Chrome montre la progression du téléchargement à ce petit fond. barre d'état gauche. Je ne suis pas tout à fait sûr, mais je pense qu'Opera montre également la progression du téléchargement à la barre de progression. –

0

Oui, en théorie, bien que je devrais remettre en question la précision puisque la vitesse d'Internet fluctue généralement (plus si vous n'êtes pas câblé). Il serait probablement sauter beaucoup.

Puis encore, ce est une barre de progression précise? J'aimerais en voir un dans Windows avant de voir un en ligne!

+0

Quoi de plus: si vous êtes derrière un proxy HTTP qui est derrière une connexion plus lente, le client aura fini d'envoyer toutes les données avant que le proxy ait fini de le télécharger sur le serveur distant. –

Questions connexes