Problème de téléchargement de fichier depuis un serveur en FTP

phephelavi Messages postés 40 Date d'inscription mardi 16 mai 2006 Statut Membre Dernière intervention 27 octobre 2009 - 23 janv. 2007 à 07:26
 Utilisateur anonyme - 26 janv. 2007 à 14:38
Bonjour,


 <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>


J'avais déja exposé mon problème sur le net, et merci à Elguevel pour son code en Winnet. J'ai donc développé deux codes, un en Winnet et l'autre en Indy10 pour Delphi. Dans le cas d'un envoi au serveur, j'avais trouvé la solution que j'ai exposé dans le sujet mais maintenant je dois récupérer des fichiers depuis mon serveur.


 


Alors, je ne vous montrait pas tout le code (Indy10) puisqu'il fonctionne sauf si vous me le demandez, parce que l'essentiel c'est plutôt un problème de chaine, du moins je crois.


 


Exemple dans le code suivant :


 




 



     IdFtp1.Get('Martin.txt', 'C:\CobraSecurite\MartinSAV.txt', true, false);


 





 


Si je code en dur, pas de problème : le fichier est bien envoyé sur le serveur


 


Même comme le nom du fichier change, alors je ne peux pas le mettre en dur !


Alors, je me sert de Opendialog.Filename pour charger le nom du fichier à envoyer mais sans appeler la méthode Execute, car le client n'intervient pas, c'est en tâche de fond...




 








 






 /IdFtp1.Get(OpenDialog1.FileName, OpenDialog2.FileName, true, false);





 







 


Et là : ca ne passe pas. ET je ne comprend pas pourquoi.


 


J'ai remarqué aussi que delphi me donne un avertissement : Filectrl est propre à une plateforme


 


Il est peut-être là le problème ? Merci pour votre aide, j'ai fini le programme mais il me reste cette erreur !

5 réponses

Utilisateur anonyme
23 janv. 2007 à 09:13
Salut,

Le problème vient peut etre du fait que tu n'utilises pas du tout la bonne procedure

{>>Procédure pour envoyer un fichier}
procedure TMain.ServerFTPRetrieveFile(ASender: TIdFTPServerThread;
  const AFileName: String; var VStream: TStream);

{>>Procédure pour récupérer un fichier}
procedure TMain.ServerFTPStoreFile(ASender: TIdFTPServerThread;
  const AFileName: String; AAppend: Boolean; var VStream: TStream);

Je te conseille fortement de te documenter sur le protocole FTP : si tu l'avais fais tu aurais trouvé par toi meme.

Peut etre aussi penser à regarder sur le site dédié à Indy : Google => Mot clé Indy => Résultat

Peut etre penser à chercher avant de poster camarade non ?
0
Utilisateur anonyme
23 janv. 2007 à 09:16
Allez on fait la totale

{>>Procédure réalisée quand le client se connecte}
procedure TMain.ServerFTPUserLogin(ASender: TIdFTPServerThread;
  const AUsername, APassword: String; var AAuthenticated: Boolean);

{>>Procédure réalisée quand le Serveur se déconnecte}
procedure TMain.ServerFTPDisconnect(AThread: TIdPeerThread);

{>>Procédure pour définir les répertoires d'accueil et courant}
procedure TMain.ServerFTPAfterUserLogin(ASender: TIdFTPServerThread);

{>>Procédure pour lister un dossier}
procedure TMain.ServerFTPListDirectory(ASender: TIdFTPServerThread;
  const APath: String; ADirectoryListing: TIdFTPListItems);

{>>Procédure pour changer de dossier}
procedure TMain.ServerFTPChangeDirectory(ASender: TIdFTPServerThread;
  var VDirectory: String);

{>>Procédure pour Créer de dossier}
procedure TMain.ServerFTPMakeDirectory(ASender: TIdFTPServerThread;
  var VDirectory: String);

{>>Procédure pour supprimer un dossier}
procedure TMain.ServerFTPRemoveDirectory(ASender: TIdFTPServerThread;
  var VDirectory: String);

{>>Procédure pour supprimer un fichier}
procedure TMain.ServerFTPDeleteFile(ASender: TIdFTPServerThread;
  const APathName: String);

Voila
0
Utilisateur anonyme
25 janv. 2007 à 20:54
Hey [auteurdetail.aspx?ID=775667 phephelavi] reste parmis nous : t'es partis ?
0
phephelavi Messages postés 40 Date d'inscription mardi 16 mai 2006 Statut Membre Dernière intervention 27 octobre 2009
26 janv. 2007 à 12:40
Oui Franky, je suis là avec un jour de retard ! Je travaille et je ne peux pas rester toujours derrière l'écran, bon !


J'ai développé mon programme suivant quelques codes glanés à droite et à gauche. C'est la première fois que j'utilise les composants Indy dontc je dois apprendre avant de maîtriser et bien sur mon code n'est pas parfait, mais fonctionne très bien sauf si je ne donne pas les noms des fichiers en "dur". Ou alors, je solutionne le problème en passant apr un TDirectoryList e relié à un TFileListbox, et là ça passe.


Je tient compte de ta remarque et je vais étudier ton code, ta démarcher et la doc sur le FTP. Mais est-ce obliger d'utiliser le composant TIdFTPServerThread ? Dan smon programme, j'ai juste un IdFTP, un IdAntiFreeze et un OpenDialgog. Je peux télécharger, placer un fichier un ou plusieurs fichiers sur le serveur sans problème (fichier en code dur !).

Je me reconnecte ce soir ...

A+

Phephealvi


 


 


 


 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
26 janv. 2007 à 14:38
Ben j'ai envie de te répondre que si tu as pas envie d'utiliser de thread peut etre devrait u changer de composant .

Juste une petite remarque : Ton serveur doit pouvoir gérer plusieurs clients à la fois d'ou l'utilisation des threads ici.
0
Rejoignez-nous