Pour charger 3 fichiers localement dans Flash Player, on pourrait utiliser quelque chose comme ça à gérer la séquence après que l'utilisateur a choisi les fichiers ...Le nom de fichier d'un fichier vient d'être chargé via FileReference n'est pas disponible
private function uploadList(evt:Event):void{
var arr:Array = fileReferenceList.fileList;
for each(var item:FileReference in arr){
item.addEventListener(Event.COMPLETE, onFileLoadComplete);
item.load();
}
}
// Etape 2 - aller de l'avant et charger le fichier et attendre l'étape 3 ... cela sera appelé trois fois dans ce cas d'utilisation.
private function onFileLoadComplete(e:Event):void {
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onDataLoadComplete);
loader.loadBytes(FileReference(e.target).data);
}
// Étape 3 - Flash Player a chargé le fichier et est prêt pour le traitement ... // cet exemple est une image étant bourrée dans un objet BitmapData ...
private function onDataLoadComplete(e:Event):void {
var bitmapData:BitmapData = Bitmap(e.target.content).bitmapData;
var loader:Loader = Loader(e.target.loader);
...
}
// Étape 4 - Où est le nom du fichier et la taille de fichier situé octet pour chaque fichier en passant par l'étape 3?
Je n'ai pas réussi à localiser ces données dans des objets existants.
Ma résolution ....
Je farcir les informations dans un dictionnaire simple et le récupérer plus tard.
Peut-être existe-t-il d'autres solutions?
private function onFileLoadComplete(e:Event):void {
if(FileReference(e.target).data.length == 0){
return;
}
var loader:Loader = new Loader();
filenameDict[loader] = String(FileReference(e.target).name);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onDataLoadComplete);
loader.loadBytes(FileReference(e.target).data);
}
private function onDataLoadComplete(e:Event):void {
var bitmapData:BitmapData = Bitmap(e.target.content).bitmapData;
var loader:Loader = Loader(e.target.loader);
var file:String = filenameDict[loader];
delete filenameDict[loader];