Bonjour à tous,
J'ai un petit souci avec le composant TIdFTP. En effet, quand je lance la commande TIdFTP.List, je tombe forcément en timeout lors de la récupération des fichiers à l'intérieur d'un répertoire ciblé alors qu'il n'y a qu'un seul fichier.
Voici le code utilisé :
Quand j'utilise cette procédure, je vois bien que la connexion au FTP est bien établie et puis ça bloque lorsqu'on arrive sur l'instruction IdFTP1.List... ça tomben en timeout systématiquement...quelqu'un aurait-il une idée de ce qu'il peut se passer et comment y remédier svp ?
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 procedure TFSynchroInternet.actConnecterExecute(Sender: TObject); var SSLHandler : TIdSSLIOHandlerSocketOpenSSL ; taille:extended; liste:TStringList; DossierCourant,x,m:string; label lister; begin if IdFTP1.Connected then IdFTP1.Disconnect; liste:=TStringList.Create; liste.Clear; lbDossier.Clear; lbFichier.Clear; m:=AnsiLeftStr(IBTParametreServeurREPERTOIRE_BDD.AsString,1);//renvoie les premiere caractére m:=AnsiRightStr(IBTParametreServeurREPERTOIRE_BDD.AsString,1);//renvoie les derniere caractére DossierCourant:=IBTParametreServeurREPERTOIRE_BDD.AsString; lbDossier.Items.Add(DossierCourant); lbDossier.ItemIndex:=0; SSLHandler := TIdSSLIOHandlerSocketOpenSSL.create(nil) ; try SSLHandler.MaxLineAction := maException ; SSLHandler.SSLOptions.Method := sslvTLSv1 ; SSLHandler.SSLOptions.Mode := sslmUnassigned ; SSLHandler.SSLOptions.VerifyMode := [] ; SSLHandler.SSLOptions.VerifyDepth := 0 ; IdFTP1.IOHandler := SSLHandler ; IdFTP1.Host := IBTParametreServeurURL.AsString ; IdFTP1.Port := IBTParametreServeurPORT.AsInteger ; IdFTP1.Username := IBTParametreServeurIDENTIFIANT.AsString ; IdFTP1.Password := IBTParametreServeurMOT_DE_PASSE.AsString ; IdFTP1.UseTLS := utUseExplicitTLS ; IdFTP1.AutoIssueFEAT := false ; lister : IdFTP1.Connect ; DossierCourant:=(lbDossier.Items.Strings[lbDossier.ItemIndex]); IdFTP1.ChangeDir(DossierCourant); IdAntiFreeze1.Process ; IdFTP1.List(liste,'*.xml',true); IdAntiFreeze1.Process ; repeat x:=liste[0]; if (idftp1.Size(x)<= 0) and (ExtractFileExt('c:\'+x)='') then begin //dossier if (x<>'.') and (x<>'..') then lbDossier.Items.Add(DossierCourant+x+'/') end else begin //fichier if (x<>'.') and (x<>'..') then lbFIchier.Items.Add(DossierCourant+x); end; liste.Delete(0); until liste.Count=0; if lbDossier.Items.Count-1>lbDossier.ItemIndex then begin lbDOssier.ItemIndex:=lbDossier.ItemIndex+1; goto lister; end; telecharger; finally SSLHandler.Free ; end; end;
Merci beaucoup
Partager