Question

Je le téléchargement de fichiers à l'aide de la méthode upload () de la classe FileReference. Je veux afficher la vitesse de connexion actuelle et je me demandais ce qui était une bonne façon de le faire.

Ma technique actuelle est d'utiliser une minuterie tous les 1 mili secondes, comme suit:

var speed:Function = function(event:TimerEvent):void {
    speed = Math.round((currentBytes - lastBytes) / 1024);
    lastBytes = currentBytes;
}
var speedTimer:Timer = new Timer(1000);
speedTimer.addEventListener(TimerEvent.TIMER, uploadSpeed);

et currentBytes dans la se prépare ProgressEvent.PROGRESS. Cette technique semble imprécise. Je me demandais ce que les autres moyens que je pourrais utiliser pour calculer la vitesse de téléchargement lors de l'envoi et l'affichage en temps réel.

Toutes les idées ou opinions sont les bienvenues!

Merci beaucoup,

Rudy

Était-ce utile?

La solution

Si ce bloc de code est un copier-coller ce ne sera certainement pas le travail que vous attendiez à. Vous déclarez speed en fonction au sein de laquelle vous semblez le redéfinir comme un nombre. Je vous remercie de l'IDE Flash Rentrons loin avec la grammaire peu précis, mais le code comme ça va vous conduire dans toutes sortes d'ennuis. Essayez d'être explicite lors de l'écriture de votre code.

Essayez quelque chose comme ça, en remplaçant yourLoader avec tout ce que vous identifiant attribué au Uploader:

private var speed:Number = 0;
private var lastBytes:uint = 0;

private function uploadSpeed(event:TimerEvent):void
{
   speed = Math.round((yourLoader.currentBytes - lastBytes) / 1024);
   lastBytes = yourLoader.currentBytes;
}

private var speedTimer:Timer = new Timer(1000);
speedTimer.addEventListener(TimerEvent.TIMER, uploadSpeed);

Cela devrait calculer le nombre d'octets déplacés dans 1 seconde intervalles.

Edit:

Vous voudrez peut-être faire l'un intervalle peu plus petit que 1000ms et calculer une vitesse moyenne de votre dernière n échantillons. Cela rendrait le nombre de vos utilisateurs voient apparaître plus stable qu'il ne probablement en ce moment. Faire une vitesse Array et .push() le dernier échantillon. Utilisez .shift() pour déposer les échantillons les plus anciens afin que vous ne perdez pas trop de précision. Essai et erreur vous donnera une meilleure idée de combien d'échantillons à la main et à quelle fréquence les prendre.

Autres conseils

Vous pouvez contrôler la vitesse de téléchargement sur le serveur, puis nous renverrons des données au client. Cette technique est souvent utilisée pour les formes de téléchargement de fichiers ajax.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top