Envoie de fichier texte par ftp

Signaler
Messages postés
299
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
9 février 2010
-
Messages postés
299
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
9 février 2010
-
bonjout tout le monde!

je veux envoyer un fichier texte en utilisant le protocole ftp (chose que je n'ai jamais fait) j'ai essayé de voir du coté des sources dispo sur le site et j'ai fais le code suivant :
///////////
  IdFTP1.Host := '10.5.5.11';
  IdFTP1.Port := 21;
  IdFTP1.Username := 'user';
  IdFTP1.Password := 'pass';
  IdFTP1.ReadTimeout:=10000;
  try
    IdFTP1.Connect();
  except
    On E:Exception do ShowMessage(E.message);
  end;
//envoie du fichier de commande
     if IdFTP1.Connected then
       IdFTP1.Put('C:\cells.txt', 'CELLS.txt', false);
///////////

mais le problème c'est que lorsque j'execute, j'ai un message comme celui là :
"Le projet Project1.exe a provoqué une classe d'éxception EIdSocketError avec le message 'Erreur de socket # 10060 Délai de connexion dépassé.' Processus stopé ...."

Je trouve pas la cause qui génère ce dépassement de délai? avez vous une idée? ou bien j'ai vraiment loupé mon code??

Merci pour votre aide!!

15 réponses

Messages postés
299
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
9 février 2010
1
je rajoute que l'erreur se déclanche sur la ligne :
IdFTP1.Connect();
Messages postés
1023
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
17 août 2008
2
Salut !

Ton code à l'air correct, mais le dépassement des délais peut avoir comme cause plusieurs facteurs:
<li>Lenteur du ftp</li><li>Firewall qui demande la confirmation à l'utilisateur</li><li>Etc...</li>Tu devrais laisser la propriété ReadTimeout à sa valeur par défaut, c'est à dire 60000.

Assure toi aussi que l'authentification est bien faite, en mettant la propriété AutoLogin à True.
Messages postés
299
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
9 février 2010
1
j'ai plus cette erreur là mais j'ai une autre maintenant;
lorsque je veux envoyer il m'affiche :
"COMMAND NOT IMPLEMENTED. PRO01EL4"

le problème c'est que je n'ai pas delphi sur la machine sur laquelle j'execute!!

merci à l'avance pour votre aide!!
Messages postés
1023
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
17 août 2008
2
Alors là... jamais eu cette erreur !
As-tu essayé d'accéder au serveur ftp avec un client tel que FileZilla pour vérifier que l'erreur ne vient pas du ftp ?
Messages postés
299
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
9 février 2010
1
je crois que le problème se situe dans l'utilisation du composant même!
j'ai vu une fois un commentaire de notre confrère "DELPHIPROG" qui parlait d'un composant faisant les transfert en ftp, mais je ne le trouve pas sur le net!
avez vous une idée????

Othland : il te manque 90% du travail là .


Tu as oublié de créer le répertoires de destinations et le type de transfer

Apres une recherche très rapide, on tombe ici.
Messages postés
299
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
9 février 2010
1
merci francky!
le problème c'est que lors de l'execution, j'ai une erreur de type :
"COMMAND NOT IMPLEMENTED. PRO01EL4"

je trouve pas quoi faire??
Messages postés
299
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
9 février 2010
1
sinon, avez vous une idée comment exécuter un fichier script (*.script) de la forme :
FTPSERVER
USER
put fichier.txt
bye

merci pour votre support
Messages postés
299
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
9 février 2010
1
après une petite recherche sur le net , j'ai trouvé ceci :
erreur : "COMMAND NOT IMPLEMENTED" code de l'erreur : 502
--> Commande non mise en application. Le serveur ne supporte pas cette commande.

donc faut travailler avec un autre composatn que indy non???

sachant que je ve veut qu'uploader un fichier texte sur mon serveur! c'est tout
Messages postés
1023
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
17 août 2008
2
En effet, j'avais pas vu qu'il manquait la moitié du code nécessaire ! Je croyais que l'erreur venait toujours de la connexion.

@othland: regarde le lien que donne Francky et tu as toutes les cartes an main. Indy (9 ou 10) permettent tous les deux d'uploader un fichier texte sur un serveur ftp, c'est quand même très basique !

Humm à liire l'erreur j'ai le sentiment que le serveur en question n'admet pas la fonction Put ou que les droits sont restreints : dans ce cas tu ne pourras rien y faire.

Avant d'aller au lit : regarde ici. Pour confirmation fait un test avec TelNet
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
Bonsoir,

PRO01 = ?? PRO gram 01 ?? PROcess 01
EL4 = Red Hat Enterprise Linux 4
Certainement l'identification du type de serveur et du programme, service déclencheur de l'erreur. Bref pas très utile.

Il faudrait plutot s'attarder sur l'erreur 502.
 502 : Premier chiffre (5) = Erreur du serveur. Déjà c'est pas de ton côté.
Pour info, l'erreur 502 est souvent due à un trafic trop important (surcharge du serveur), ce qui empeche une connexion.

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
Bon ok j'me suis loupé, J'ai donné le résultat du coté client ftp et non du serveur  C'est ça de lire les posts trop rapidement.

Rectificatif :
  5 = (Premier chiffre) Réponse négative permanente
  0 = (Second chiffre) Erreur de syntaxe

Donc, reste à trouver maintenant la commande qui pose effectivement problème.

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
Messages postés
299
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
9 février 2010
1
bonjour tout le monde!
désolé pour le retard, au fait avec la client IndyFTP, ça ne marchait pas car tout simplement IL N'Y A PAS DE WINDOWS sur le serveur vers lequel j'envoyait mon fichier texte, c'est un switch GSM géré par un OS ERICSSON, et comme je suis nouveau, je ne savais pas ce détail!! bref!
suite à la demande de couf, j'envoie mon source :
/////////
la clause uses :
/////////
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, XPMan, MSNPopUp, IdBaseComponent, IdComponent,
  IdUDPBase, IdUDPClient, IdTrivialFTP, IdUDPServer, IdTrivialFTPServer,
  IdTCPConnection, IdTCPClient, IdFTP, IdFTPCommon, ExtCtrls, WinInet, jpeg, ShellApi,
  Buttons;
//////////
le code :
// Create object.
IdFTP1 := TIdFTP.Create(nil);
// Initialize with proper settings.
IdFTP1.Host := ip;
IdFTP1.Username := 'FTP#1';
IdFTP1.Password := 'FTP#1';
// Connect.
IdFTP1.Connect;
// Go to a certain folder on the server.
try
  IdFTP1.ChangeDir('C:/');
except on E: Exception do showmessage(E.Message);
end;
// Ascii mode for plain text.
try
  IdFTP1.TransferType := ftASCII;
  IdFTP1.Put('C:\Documents and Settings\nmcuser\Desktop\cells.txt', 'File.txt');
except on E: Exception do showmessage(E.Message);
end;
// Clean-up.
IdFTP1.Free;
/////////

merci infiniment pour votre aide! et désolé pour le second thread!