Estoy trabajando en una interfaz para que el usuario pueda subir un numero determinado de fotos a su servidor, la cual esta conformado por varios botones que al darles click, mediante un FileReference, cargan los archivos del pc.
Mi problema surge ya que a todos les he puesto la misma funcion de carga de archivos para ahorrarme unas cuantas lineas de código (MUUCCHHHAASS diria yo), lo que genera que si por ejemplo el usuario le hace click al primer boton, este empieza a cargar el archivo....pero si antes de terminar la carga de ese archivo el usuario le hace click al segundo boton para cargar su segundo archivo, el programa detiene el anterior proceso y comienza este nuevo, con el que el resultado es que sólo me carga el ultimo archivo al que le haya pedido que cargara, dejando los demás a medio cargar....
Cómo puedo hacer para que me cargue los archivos paralelamente???? (ojalá me haya hecho entender)
De todas manera aqui dejo el código que estoy realizando
Código ActionScript :
//Clases necesarias import flash.events.*; import flash.net.FileFilter; import flash.net.FileReference; import flash.net.URLRequest; var uploadURL:URLRequest; var archivo:FileReference; var url:URLRequest; var cargarImagen:Loader; var cargadorURL:URLLoader; var archivoNo:String; var advertArchivo:String; var textArchivo:String; var fotoArchivo:String; var precargaFoto:precargaFoto_mc; cambiarImg01_btn.addEventListener(MouseEvent.CLICK, Examinar); cambiarImg02_btn.addEventListener(MouseEvent.CLICK, Examinar); cambiarImg03_btn.addEventListener(MouseEvent.CLICK, Examinar); cambiarImg04_btn.addEventListener(MouseEvent.CLICK, Examinar); cambiarImg05_btn.addEventListener(MouseEvent.CLICK, Examinar); //Función llamada al pulsar examinar, se crea el filereference y se abre el navegador de archivos function Examinar(e:MouseEvent):void { Estado_txt.text = ""; Estado_txt.appendText("\n" + "Vamos a seleccionar el archivo."); uploadURL = new URLRequest(); uploadURL.url = "uploadFile.php"; archivo = new FileReference(); PonerListeners(archivo); archivo.browse(getTypes()); } //Añado los listener al objeto filereference function PonerListeners(dispatcher:IEventDispatcher) { dispatcher.addEventListener(Event.CANCEL, cancelHandler); dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(Event.SELECT, selectHandler); dispatcher.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,uploadCompleteDataHandler); } //Con está función se generan los tipos de archivos que estarán disponibles para seleccionar desde el navegador function getTypes():Array { var allTypes:Array = new Array(getImageTypeFilter()); return allTypes; } //Tipos de imágenes admitidos, tanto para pc como para mac function getImageTypeFilter():FileFilter { return new FileFilter("Imagenes (*.jpg, *.jpeg, *.gif, *.png)","*.jpg;*.jpeg;*.gif;*.png"); } //Se distribuye cuando se cancela la descarga desde el navegador de archivos. function cancelHandler(event:Event):void { Estado_txt.appendText("\n" + "Subida cancelada."); } function infoImagen(e:Event):void { Estado_txt.appendText("\n" + (cargarImagen.width)); e.target.content.width = 120; e.target.content.height = 90; } //Se distribuye cuando se finaliza la descarga o la carga function completeHandler(event:Event):void { url = new URLRequest ("subidas/" + archivo.name); cargarImagen = new Loader; cargarImagen.load(url); cargarImagen.contentLoaderInfo.addEventListener(Event.COMPLETE, infoImagen); foto_mc.addChild(cargarImagen); Estado_txt.appendText("\n" + "Subida completada."); } //Se reciben datos del servidor tras completar la carga function uploadCompleteDataHandler(event:Event):void { Estado_txt.appendText("\n" + "Subida confirmada por el servidor."); } //Se produce cuando falla la carga y hay un código http de error. //Por ejemplo si no se encuentra el PHP, se generará un error 404. function httpStatusHandler(event:HTTPStatusEvent):void { Estado_txt.appendText("\n" + "Se ha producido el siguiente error: " + event.status); } //Se produce cuando falla la carga o descarga function ioErrorHandler(event:IOErrorEvent):void { Estado_txt.appendText("\n" + event.text); } //Se inicia la carga o descarga function openHandler(event:Event):void { precargaFoto = new precargaFoto_mc; foto_mc.addChild(precargaFoto); Estado_txt.appendText("\nComienza la subida"); } //Se distribuye periodicamente durante la carga o la descarga, mostrando el progreso de la misma. function progressHandler(event:ProgressEvent):void { var file:FileReference = FileReference(event.target); Estado_txt.appendText("\n" + event.bytesLoaded + " bytes de " + event.bytesTotal + " bytes subidos."); } //Se distribuye al intentar descargar o cargar un archivo de un servidor fuera del entorno de seguridad de la película function securityErrorHandler(event:SecurityErrorEvent):void { Estado_txt.appendText("\nEl servidor no permitió la carga del archivo."); } //Se distribuye al elegir el archivo para carga o descarga desde el navegador de archivos. function selectHandler(event:Event):void { var archivo:FileReference = FileReference(event.target); Estado_txt.appendText("\n" + "Archivo elegido: " + archivo.name + "\n" + "Tamaño : " + archivo.size + " bytes."); if (archivo.size > 700000) { Estado_txt.appendText("\nNo se pueden subir archivos de más de 700 KB."); } else { archivo.upload(uploadURL); } }