Hola, estoy trabajando con adobe air actionscript3. Estoy intentando descargar una lista de archivos y tengo el siguiente código
private function loadafile(urlfile:String, j:int):void
{
var vectorURL:Array = urlfile.split("/");
nombrepag = vectorURL[vectorURL.length-1].toString();
Alert.show("nombre fileurl **"+nombrepag+"**"+j);
var request:URLRequest = new URLRequest(urlfile);
var loader:URLStream = new URLStream();
loader.addEventListener(Event.COMPLETE,SaveFile);
try {
loader.load(request);
} catch (error:Error) {
Alert.show("Unable to load requested URL.");
}
}
private function SaveFile(event:Event){
var loaderfile:URLStream= URLStream(event.target);
var fileData:ByteArray = new ByteArray();
loaderfile.readBytes(fileData, 0, loaderfile.bytesAvailable);
var xmltemp =loaderfile.bytesAvailable;
var filesave:File = File.applicationDirectory;
var pathrelative:String = filesave.nativePath.toString();
filesave.nativePath = pathrelative.substr(0,pathrelative.lastIndexOf("\\ "))+"\\videos\\"+nombrepag;
var stream:FileStream = new FileStream();
stream.openAsync( filesave, FileMode.WRITE );
stream.writeBytes(fileData, 0, fileData.length);
stream.close();
}
Se recorre una lista y voy pasando su respectivo url para descargar el archivo, es decir, hago un llamado a loadafile y le paso como parametro el url. Cuando carga el archivo llama la funcion saveFile para guardarlo.
El problema es el siguiente: la variable nombrepag es una variable global, al parecer hace la carga del primer archivo y mientras sucede esto el nombre del archivo a cambiado, por ejemplo, tengo las siguiente lista de urls http:/video.avi, http:/flash.swf, . Se pasa la url de video.avi aqui inicia la carga de este archivo en memoria y mientrastanto se esta pasando la url del archivo flash.swf lo cual como nombrepag es una variable global se asigna asi nombrepag = "flash.swf" y al final cuando guarda el archivo guarda con el contenido de video.avi pero bajo el nombre de flash.swf y no me guarda el archivo flash.swf.
Intuyo q es problema con la variable global y lo correcto sería pasar la url a la función saveFile para q se guardara bajo el nombre correspondiente, pero.... no conozco la forma de pasar variables
con la propiedad addEventListener. O alguien conoce otra solución???, Gracias por tu aporte