As3.0: upload de fichier et recuperation de la reponse du serveur

Contenu du snippet

Un script en actionscript 3.0 pour permettre de recuperer des donnees en provenance du serveur : un message de confirmation par exemple

Source / Exemple :


package
{
	import flash.events.Event;
	import flash.events.DataEvent;
	import flash.events.IOErrorEvent;
	import flash.events.ProgressEvent;
	import flash.events.SecurityErrorEvent;
	
	import flash.net.FileFilter;
	import flash.net.FileReference;
	import flash.net.URLRequest;
	import flash.net.URLVariables;
	
	public class exemple_d_upload_de_fichier
	{
		private var requete:URLRequest;
		
		public function __choisirUnFichier():void
		{
			//on peut uploader les fichiers en envoyant des variables
			var parametres:URLVariables = new URLVariables;
			parametres.__variable1 = "ici une variable bidon";
		    parametres.__variable_peu_importe_ce_que_c_est = 25;
			
		        requete = new URLRequest(Global.SUBMITAPP_URL);
		        requete.method = "POST";
		        requete.data = parametres;
			
			__parcourirLesDossiers();
		}
		private function __parcourirLesDossiers():void
		{
			var selectionneurDeFichiers:FileReference = new FileReference;
			selectionneurDeFichiers.addEventListener(Event.SELECT, __alerteFichierSelectionne,false,0,true);
			selectionneurDeFichiers.addEventListener(Event.CANCEL, __alerteChoixDeFichierAvorte,false,0,true);
			selectionneurDeFichiers.browse([new FileFilter("Images PNG (*.png)", "*.png"), new FileFilter("Images JPEG (*.jpg)", "*.jpg")/*vous pouvez rajouter les extensions que vous voulez ici, si le browse() est appelle sans parametres ou le tableau ne contient rien(null ou vide) alors tous les fichiers deviennent selectionnables...*/]);
		}
		private function __alerteChoixDeFichierAvorte(event:Event):void
		{
			var selectionneurDeFichiers:FileReference = event.target as FileReference;
			selectionneurDeFichiers.removeEventListener(Event.SELECT, __alerteFichierSelectionne,false);
			selectionneurDeFichiers.removeEventListener(Event.CANCEL, __alerteChoixDeFichierAvorte,false);
		}
		private function __alerteFichierSelectionne(event:Event):void
		{
			var selectionneurDeFichiers:FileReference = event.target as FileReference;
			selectionneurDeFichiers.removeEventListener(Event.SELECT, __alerteFichierSelectionne,false);
			selectionneurDeFichiers.removeEventListener(Event.CANCEL, __alerteChoixDeFichierAvorte,false);
			
			// debut de l'upload sur le serveur
			
			selectionneurDeFichiers.addEventListener(Event.COMPLETE, __alerteUploadTermine,false,0,true);
			selectionneurDeFichiers.addEventListener(SecurityErrorEvent.SECURITY_ERROR, __alerteErreurSurvenue,false,0,true);
			selectionneurDeFichiers.addEventListener(ProgressEvent.PROGRESS, __alerteProgressionFichier,false,0,true);
			selectionneurDeFichiers.removeEventListener(IOErrorEvent.IO_ERROR, __alerteErreurSurvenue,false);
			selectionneurDeFichiers.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, __alerteReponseDuServeur,false,0,true);
			
			selectionneurDeFichiers.upload(requete, "fichierSelectionne");
			//le second parametre est le nom de reference par lequel on peut recuperer le fichier dans le script serveur
		}
		private function __alerteErreurSurvenue(event:Event):void
		{
			var selectionneurDeFichiers:FileReference = event.target as FileReference;
			selectionneurDeFichiers.removeEventListener(Event.COMPLETE, __alerteUploadTermine,false);
			selectionneurDeFichiers.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, __alerteErreurSurvenue,false);
			selectionneurDeFichiers.removeEventListener(ProgressEvent.PROGRESS, __alerteProgressionFichier,false);
			selectionneurDeFichiers.removeEventListener(IOErrorEvent.IO_ERROR, __alerteErreurSurvenue,false);
			selectionneurDeFichiers.removeEventListener(DataEvent.UPLOAD_COMPLETE_DATA, __alerteReponseDuServeur,false);
			
			//erreur lors de l'upload
		}
		private function __alerteProgressionFichier(event:ProgressEvent):void
		{
			//calcul du pourcentage
			var percent:int = int(100.0 * event.bytesLoaded/event.bytesTotal);
		}
		
		private function __alerteUploadTermine(event:Event):void
		{
			var selectionneurDeFichiers:FileReference = event.target as FileReference;
			selectionneurDeFichiers.removeEventListener(Event.COMPLETE, __alerteUploadTermine,false);
			selectionneurDeFichiers.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, __alerteErreurSurvenue,false);
			selectionneurDeFichiers.removeEventListener(ProgressEvent.PROGRESS, __alerteProgressionFichier);
			selectionneurDeFichiers.removeEventListener(IOErrorEvent.IO_ERROR, __alerteErreurSurvenue,false);
			//fichier uploade
		}
		private function __alerteReponseDuServeur(event:DataEvent):void
		{
			var selectionneurDeFichiers:FileReference = event.target as FileReference;
			selectionneurDeFichiers.removeEventListener(DataEvent.UPLOAD_COMPLETE_DATA, __alerteReponseDuServeur,false);
			
			//fichier uploade avec reponse du serveur
			var response:String = event.data as String;
			//vous pouvez maintenant en faire ce que vous voulez
		}
	}
}

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.