Bonjour

J'envoie des fichiers en upload sur un serveur, mais j'ai un problème dans mon application Flex/air :

sur le serveur le fichier est bien recu qu'une seule fois (pour chacun) , voici les logs du serveur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
[WARN] name = idRecto.jpg
[WARN] name = idVerso.docx
[WARN] name = RIB.pdf
puis le serveur envoie une réponse

et grâce a un listener sur mon fichier uploadé, j'aimerai récupérer la réponse du serveur propre a cet upload

Le problème est que je reçois la réponse de tous les fichiers que j'envoie mélangés. Pas très pratique...

voici les réponses que j'affiche :
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
reponse : {"fileName":"idVerso.docx","received":true,"token":"qsdtgqdfh","jsonrpc":"2.0"}
{"fileName":"idVerso.docx","received":true,"token":"qsdtgqdfh","jsonrpc":"2.0"}
{"fileName":"idRecto.jpg","received":true,"token":"qsdtgqdfh","jsonrpc":"2.0"}
{"fileName":"RIB.pdf","received":true,"token":"qsdtgqdfh","jsonrpc":"2.0"}
{"fileName":"idVerso.docx","received":true,"token":"qsdtgqdfh","jsonrpc":"2.0"}
 
 
reponse : {"fileName":"idVerso.docx","received":true,"token":"qsdtgqdfh","jsonrpc":"2.0"}
{"fileName":"idVerso.docx","received":true,"token":"qsdtgqdfh","jsonrpc":"2.0"}
{"fileName":"idRecto.jpg","received":true,"token":"qsdtgqdfh","jsonrpc":"2.0"}
{"fileName":"RIB.pdf","received":true,"token":"qsdtgqdfh","jsonrpc":"2.0"}
{"fileName":"idVerso.docx","received":true,"token":"qsdtgqdfh","jsonrpc":"2.0"}
{"fileName":"RIB.pdf","received":true,"token":"qsdtgqdfh","jsonrpc":"2.0"}
{"fileName":"idRecto.jpg","received":true,"token":"qsdtgqdfh","jsonrpc":"2.0"}
 
 
reponse : {"fileName":"idVerso.docx","received":true,"token":"qsdtgqdfh","jsonrpc":"2.0"}
{"fileName":"idVerso.docx","received":true,"token":"qsdtgqdfh","jsonrpc":"2.0"}
{"fileName":"idRecto.jpg","received":true,"token":"qsdtgqdfh","jsonrpc":"2.0"}
{"fileName":"RIB.pdf","received":true,"token":"qsdtgqdfh","jsonrpc":"2.0"}
{"fileName":"idVerso.docx","received":true,"token":"qsdtgqdfh","jsonrpc":"2.0"}
{"fileName":"RIB.pdf","received":true,"token":"qsdtgqdfh","jsonrpc":"2.0"}
{"fileName":"idRecto.jpg","received":true,"token":"qsdtgqdfh","jsonrpc":"2.0"}
j’aimerai que dans chaque réponse il n'y ait qu'une seule réponse. Je ne pense pas que problème ne vient pas du coté serveur, car le fichier est bien reçu qu'une fois, et la réponse envoyé qu'une fois.



Mon application lit le contenu d'un dossier, met un listener sur chaque fichier contenu dans le dossier et les uploade un par un sur le serveur.
Les listeners permettent de récupérer la réponse du server



voici 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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 
<?xml version="1.0" encoding="utf-8"?>
 
<mx:WindowedApplication
pageTitle= "Upload Example"
layout= "absolute"
xmlns:mx= "http://www.adobe.com/2006/mxml">
 
<mx:Script>
<![CDATA[
	import mx.automation.events.EventDetails;
 
 
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
import mx.rpc.http.HTTPService;
import flash.net.URLRequest;
 
public var objectReceived:Object=new Object();
 
 
[Bindable]
public var dataToSend:String="";
 
public var file:File=new File();
 
public function doCreationComplete():void
{
	var directory:File = File.desktopDirectory.resolvePath("julein_17062011_0002/");
	var list:Array = directory.getDirectoryListing();
	var i:int=0;	
	var listLength: int =list.length;
	var url:URLRequest = new URLRequest("http://localhost:8888/UploadExample");
	//var url:URLRequest = new URLRequest("http://upload-files.appspot.com/UploadExample");
 
	for (i= 0; i < listLength; i++) 
		{
			list[i].addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, responseHandler);
		}
	for (i= 0; i < listLength; i++) 
		{
			list[i].upload(url);
		}
}
private function responseHandler(event:DataEvent):void
{
//get the response String
var reponse:String = String(event.data);
 
trace ("reponse : " + reponse);
trace ("");
}
 
]]>
</mx:Script>
<mx:Button click="doCreationComplete()"/>
</mx:WindowedApplication>
Je pense que le problème vient de l'écoute de l'évènement et au fait que les upload ne sont peut etre pas synchrone, mais je ne vois pas comment régler ca...

J'ai essayé de séparer l'ajout d'écouteur sur chaque fichier, puis leur upload, mais ca ne change rien.

Pouvez vous m'aider ?

merci