IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flex Discussion :

Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référen


Sujet :

Flex

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 91
    Points : 49
    Points
    49
    Par défaut Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référen
    Bonjour tout le monde,

    Voilà mon code MXML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    36
    37
    38
    39
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%" showEffect="{IrisEffectId}">
     
    <!-- On fait appel au fichier ActionScript contenant toutes les fonctions 
    et les packages Actionscript utilisés  -->
    	<mx:Script source="../actionscript/amfphp/upload.as"/>
     
    <!-- RemoteObject: accès service distant AMFPHP -->
    	<mx:RemoteObject id="ROService"	showBusyCursor="true" 
    		source="classif_amfphp.traitement" destination="amfphp">
    		<mx:method name="traitementMajPonctuelle" result="traitementMajPonctuelleResult(event)" />
    	</mx:RemoteObject>
     
    <!--Effet permettant de rendre les transitions de l'interface plus douces-->
    	<mx:Iris id="IrisEffectId" duration="400"/>
     
    <mx:TitleWindow title="Transfert du fichier" y="230" horizontalCenter="0">
    	<mx:HBox width="100%" paddingTop="10">
    		<mx:VBox height="100%" width="100">
    			<mx:Button label="Upload" click="{upload()}" id="button1" themeColor="0xf37021"/>
    		</mx:VBox>
    		<mx:Label text="Fichiers CSV uniquement" id="label1"/>
    	</mx:HBox>
    	<mx:Spacer top="10"/>
    		<mx:HRule width="325" horizontalCenter="0" verticalCenter="-150"/>
    	<mx:Spacer top="10"/>
    <mx:HBox width="100%">
    		<mx:VBox height="100%" width="100">
    			<mx:Button label="Traitement" toolTip="Lancer le traitement pour la 'Classification des Sites Radio'" click="{traitementMajPonctuelle()}" themeColor="0xf37021" fillColors="[0xf37021,0xf37021]" fillAlphas="[1.0, 1.0, 1.0, 1.0]"/>
    		</mx:VBox>
    		<mx:Label text="Lancement de la MàJ ponctuelle" paddingTop="4"/>
    </mx:HBox>
    <mx:TextArea width="327" height="134" id="textarea1" horizontalCenter="0" verticalCenter="-44" text="Cette fenêtre vous permet d'effecuer les ajustements de priorités, demandés par les régions." editable="false" fontSize="11" color="#2434CD" />
    </mx:TitleWindow>
    	<mx:Label text="Ajustement de priorités" styleName="titre2" horizontalCenter="0" y="195">
     
    	</mx:Label>
     
    </mx:Canvas>
    Mon code ActionScript:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    [Embed(source="../../css/icones/Down32x32.png")]
    private var infoIconeClass:Class;
     
    /* On fait appel aux différents packages ActionScript utilisés */
    import flash.events.DataEvent;
    import mx.collections.ArrayCollection;
    import mx.controls.Alert;
    import mx.rpc.events.ResultEvent; // Personnaliser le curseur "busy"
    import flash.net.FileFilter;
     
    /* Déclaration des variables */
    public var fileRef:FileReference = new FileReference();
     
    /* Déclaration des variables faisant le lien avec les vues */
    [Bindable]
    private var fichierAC: ArrayCollection;
     
    /*La classe FileFilter permet d’indiquer quels fichiers du système de l’utilisateur sont répertoriés dans 
    la boîte de dialogue de recherche de fichiers qui s’affiche lors de l’appel de FileReference.browse() ou 
    FileReferenceList.browse()
    Syntaxe: [Description (chaîne de caractères), extensions de fichier à proposer à l'utilisateur (*.CSV)]
    */
    public var typesDocuments:FileFilter = new FileFilter("Fichier CSV uniquement(*.csv;)", "*.csv;");
     
    public function upload():void 
    {
    	 // listen for the file selected event
    	 // listen for the upload complete event
    	fileRef.addEventListener(Event.SELECT, selectHandler);
    	fileRef.addEventListener(Event.COMPLETE, completeHandler);
    	fileRef.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, uploadCompleteHandler);
     
    	// browse for the file to upload
    	// when user selects a file the select handler is called
    	try {
    	     var success:Boolean = fileRef.browse([typesDocuments]);
    	}
    	catch (error:Error) {
    	     trace("Unable to browse for files.");
    	}
    }
     
     
    // when a file is selected you upload the file to the upload script on the server
    public function selectHandler(event:Event):void {
    var request:URLRequest = new URLRequest("http://OBERON/classif/test/flex/uploads/file_upload.php")
    try {
    // upload file
    fileRef.upload(request);
    //textarea1.text = "uploading " + fileRef.name + "...";
    textarea1.text = fileRef.name;
    //Alert.show( "Upload du fichier fileRef.name réalisé et accepté");
    }
    catch (error:Error) {
    trace("Unable to upload file.");
    }
    }
     
    // dispatched when file has been given to the server script. does not receive a response from the server
    public function completeHandler(event:Event):void {
    Alert.show("Fichier \""+fileRef.name+"\" transféré avec succès! ", "", Alert.OK, this, null, infoIconeClass);
    }
     
     
    /*private function initialisation():void 
    {
     
    	fileRef = new FileReference();
    	fileRef.addEventListener(Event.SELECT, selectHandler);
    	fileRef.addEventListener(Event.COMPLETE, completeHandler);
    	fileRef.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, uploadCompleteHandler);
    	//ROService.upload_fichier();
    	//datagrid_players.addEventListener(DelEvent.DEL_PLAYER, delListPlayers);
    }  */
     
    // dispatched when file has been uploaded to the server script and a response is returned from the server
    // event.data contains the response returned by your server script
    public function uploadCompleteHandler(event:DataEvent):void {
    trace("uploaded... response from server: \n" + String(event.data));
    textarea1.text += event.data as String;
    }
     
    // méthode de récupération de tous les joueurs
    private function traitement_fichierResult(evt:ResultEvent):void
    {
    	fichierAC = ArrayCollection(evt.result);
    }
     
    private function traitementMajPonctuelleResult(evt:ResultEvent):void
    {
    	fichierAC = ArrayCollection(evt.result);
    }
     
    /* "Fonction AS faisant appel à la fonction "traitement_fichier" contenu dans la classe "traitement" 
    du fichier "traitement.php"
    function as --> class traitement -> function traitement_fichier
    */
    private function traitementFichier():void
    {
    	ROService.traitement_fichier();
    }
     
    private function traitementMajPonctuelle():void
    {
    	ROService.traitementMajPonctuelle();
    }
    Ma classe PHP est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    <?php
    class traitement
    {
    function traitementMajPonctuelle()
    			{
    			/*==================
    			Début de traitement du fichier maj.csv
    			//==================*/
    			$fp = fopen("../../../classif/test/flex/uploads/maj.csv","r"); //lecture
    				if (!$fp) 
    					{
    					echo "Echec de l'ouverture du fichier";
    					exit;
    					}
     
    					else {
    						// votre code;
    						echo "C'est OK";
    						$hostname = "localhost"; // nom du serveur
    						$database = "classif"; // nom de la base de données
    						$username = "****"; // nom d'utilisateur !!! ATTENTION, ne pas utiliser l'utilisateur root, 
    						//dans ce cas, tous les  visiteurs auraient tous les droits sur la base
    						$password = "****"; // mot de passe (aucun par défaut mais il est conseillé d'en mettre un)
    						$db = mysql_connect($hostname, $username, $password) or die ("Impossible de se connecter à la base de données, veuillez vérifier les informations de connexion"); 
    						//=====================
    						// Initialisation
    						//=====================
    						mysql_select_db($database,$db);
     
    						while (!feof($fp))	// teste la fin du fichier téléchargé,
    							{
    							// Tant qu'on est pas arrivé à la fin du fichier on continue...
    								$ligne = fgets($fp);  // récupère la ligne courante sur laquelle se trouve le pointeur du fichier
    								$liste = explode(";",$ligne); // on place les élements séparés par des points virgule dans un tableau. 
    															  // ";" étant le séparateur pour un fichier de type CSV 
    							  // premier élément
    								$liste[0] = ( isset($liste[0]) ) ? $liste[0] : Null;
    								$liste[1] = ( isset($liste[1]) ) ? $liste[1] : Null;
     
    								$champs1=$liste[0]; 
    								$champs2=$liste[1];
     
    								$champs1_=rtrim($champs1);	// la fonction PHP rtrim() supprime les espaces (ou d'autres caractères) de fin de chaîne 
    								$champs2_=rtrim($champs2);	// fonction très important sinon toutes les informations insérés seront suivies de "\n\r".
    															// ceci a un impact direct sur l'opération de comptage du nombre total de chaque priorité...
     
    								// pour eviter qu'un champ "nom" du fichier soit vide
    								if ($champs1!='')
    									{
    									// requete et insertion ligne par ligne 
    									// champs1 id en general dc on affecte pas de valeur
    									$query = "REPLACE INTO majPonctuelle (site_theorique,priorite_finale) VALUES('$champs1_','$champs2_')";  
    									$result= mysql_query($query);
    									if (mysql_error())
    										{
    										echo 'ERREUR DE REQUETE SUR LA BASE';
    										fclose($fp);	// fermeture du fichier
    										exit(); 
    										}
    									else	
    										{	
    										}
    									}
    							}
    						fclose($fp);	// fermeture du fichier
     
    					/*==================
    					Fin de traitement du fichier maj.csv
    					//==================*/
    					}
    			}
    }
    }?>
    Ma fonction "traitementMajPonctuelle" effectue l'import de mon fichier "maj.csv" vers une BDD. Lorsque je fais appel à ma fonction "traitementMajPonctuelle" via le bouton "traitement", au bout d'un moment j'ai l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [RPC Fault faultString="Channel disconnected" faultCode="Client.Error.DeliveryInDoubt" faultDetail="Channel disconnected before an acknowledgement was received"]
    	at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::faultHandler()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:220]
    	at mx.rpc::Responder/fault()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\Responder.as:53]
    	at mx.rpc::AsyncRequest/fault()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:103]
    	at NetConnectionMessageResponder/channelDisconnectHandler()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\messaging\channels\NetConnectionChannel.as:646]
    	at flash.events::EventDispatcher/dispatchEventFunction()
    	at flash.events::EventDispatcher/dispatchEvent()
    	at mx.messaging::Channel/disconnectSuccess()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\messaging\Channel.as:1091]
    	at mx.messaging.channels::NetConnectionChannel/internalDisconnect()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\messaging\channels\NetConnectionChannel.as:163]
    	at mx.messaging.channels::AMFChannel/internalDisconnect()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\messaging\channels\AMFChannel.as:312]
    	at mx.messaging.channels::AMFChannel/statusHandler()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\messaging\channels\AMFChannel.as:382]
    Quand je teste ma fonction dans le Browser AmfPHP, j'ai l'erreur suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.
    	at RawAmfService/readData()
    	at flash.events::EventDispatcher/dispatchEventFunction()
    	at flash.events::EventDispatcher/dispatchEvent()
    	at flash.net::URLLoader/onComplete()
    Et toutes les lignes de mon fichier CSV ne sont pas importées. Quelqu'un saurait d'ou ça vient? Merci d'avance.

  2. #2
    Membre expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Points : 3 189
    Points
    3 189
    Par défaut
    si ca ne fonctionne pas dans le browser AMFphp il ya de fdorte chance que ton problème est du coté de php. le code php que tu as posté est il exactement celui que tu utilises?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 91
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par Jim_Nastiq Voir le message
    si ca ne fonctionne pas dans le browser AMFphp il ya de fdorte chance que ton problème est du coté de php.
    Dans ce cas pourquoi une partie du fichier CSV est bien importée!??

    Citation Envoyé par Jim_Nastiq Voir le message
    Le code php que tu as posté est il exactement celui que tu utilises?
    eh bien ma classe PHP "traitement" contient plusieurs fonctions parmi lesquelles on retrouve "traitementMajPonctuelle", j'ai pris que celle là. Et c'est bien celle que j'utilise.
    j'ai vu dans une autre post que c'était du à une mise à jour de flash player, mais je n'y crois pas trop pour mon cas...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Salut aiss57,

    Saches que si tu essaies d'appeller le script
    http://OBERON/classif/test/flex/uploads/file_upload.php
    depuis un autre domaine que http://OBERON/ tu risques en effet d'avoir des soucis à cause de la MAJ de securité de flashplayer10, n'oublies donc pas d'ajouter un fichier crossdomain.xml (et d'utiliser google pour en savoir plus)

    Ensuite, moi j'ai vu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    class traitement
    {
    			{
    			/*==================
    			Début de traitement du fichier maj.csv
    			//==================*/
    // etc, etc....
    Si ton code php est tel qu'il a été posté dans ce thread tu risques en effet d'avoir un soucis, cherche l'erreur c'est pas bien compliqué

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 91
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par omar simpson Voir le message
    Saches que si tu essaies d'appeller le script
    http://OBERON/classif/test/flex/uploads/file_upload.php
    depuis un autre domaine que http://OBERON/ tu risques en effet d'avoir des soucis à cause de la MAJ de securité de flashplayer10
    Je fais appel au script "file_upload.php" afin d'uploader un fichier vers le serveur, et avec ça je n'ai pas de problème puisque le fichier est bien transféré. Néanmoins, c'est lors de l'exécution de ma fonction "traitementMajPonctuelle" que le problème surgit.
    Citation Envoyé par omar simpson Voir le message
    n'oublies donc pas d'ajouter un fichier crossdomain.xml
    J'ai essayé, j'ai crée un fichier "crossdomain.xml", voilà son contenu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0"?>
    <!-- http://www.foo.com/crossdomain.xml -->
    <cross-domain-policy>
      <allow-access-from domain="*" />
    </cross-domain-policy>
    J'ai mis ce fichier dans les répertoires:
    http://OBERON/
    et même dans: http://OBERON/classif/test/flex/uploads/
    Mais ça ne marche toujours pas.
    Citation Envoyé par omar simpson Voir le message
    Si ton code php est tel qu'il a été posté dans ce thread tu risques en effet d'avoir un soucis, cherche l'erreur c'est pas bien compliqué
    Mon code PHP est fonctionnel sans intégration dans flex, je ne vois donc pas ou peut être l'erreur...
    Sinon, lorsque je met à jour Flash (en installant la version 10), l'erreur disparait mais le problème (toutes les lignes de mon fichier CSV ne sont pas importées) est toujours présent! Que faire, je m'arrache les cheveux

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 197
    Points : 300
    Points
    300
    Par défaut
    Bonjour,

    Tu dis que ton fichier est importé jusqu'à un certain point, est-ce toujours au même endroit que le problème survient? auquel cas, le hic pourrais provenir des données elle-mêmes... genre un caractère ' ou " (qui sert en général de délimiteur pour les csv) n'aurait-il pas été inséré par un utilisateur?

    Je dis ça je dis rien... c'est juste pour essayer de faire avancer hein...

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/03/2011, 02h54
  2. Error #1009: Il est impossible d'accéder.
    Par zack990 dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 25/02/2011, 10h02
  3. Réponses: 4
    Dernier message: 23/04/2009, 14h45
  4. Réponses: 6
    Dernier message: 11/11/2008, 14h20
  5. Réponses: 3
    Dernier message: 02/06/2008, 10h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo