ProgressBar sur un Multi File Upload
Bonjour à tous,
Je suis actuellement en train de créer une galerie photos en utilisant Flex.
J'ai donc utilisé les classes FileReferenceList et FileReference pour réaliser un composant d'upload qui permet d'uploader plusieurs photos.
En fait l'événement ProgressEvent.PROGRESS est écouté pour chaque chargement d'image.
Donc je parviens actuellement à faire une progressBar pour chaque image mais j'aimerais réaliser une ProgressBar générale qui correspond aux chargement de la totalité des fichiers.
J'ai tenté de faire un calcul, mais ça ne marche pas bien.
Quelqu'un peut m'aider à faire ça ?
PS : voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
private function fileSelectedHandler(event:Event):void
{
dataGridArray = new ArrayCollection();
totalSize = 0;
loaded = 0;
lastBytesLoaded = new Array();
var fileReferenceList:FileReferenceList = FileReferenceList(event.target);
fileList = fileReferenceList.fileList;
/* Pour chaque photo du tableau file liste on appelle la fonction d'upload*/
fileList.forEach(uploadEachPhoto);
}
private function uploadEachPhoto(element:*, index:int, arr:Array):void
{
fileReference = FileReference(element);
/* Pour chaque photo on écoute l'evenement PROGRESS */
fileReference.addEventListener(ProgressEvent.PROGRESS, uploadProgressHandler);
fileReference.addEventListener(Event.COMPLETE, uploadCompleteHandler);
fileReference.upload(urlRequest);
}
private function uploadProgressHandler(e:ProgressEvent):void
{
var file:FileReference = FileReference(e.target);
/* Essai de calcul qui ne donne rien */
var coeff:Number = e.bytesTotal / totalSize;
loaded += ((e.bytesLoaded * coeff) - lastBytesLoaded[file.name]);
lastBytesLoaded[file.name] = e.bytesLoaded * coeff;
/* On affiche et on fait evoluer la Progress Bar */
_uploadPhotosView.progressBarUploadPhotosView.visible = true;
_uploadPhotosView.progressBarUploadPhotosView.setProgress(loaded,totalSize);
} |