// Identifiant de connexion
nIDConnexion est un entier
// Paramètres de la connexion FTP
sAdresseServeurFTP, sNomCompteFTP, sPasseFTP sont des chaînes
// Paramètres pour FTPCommande
sNomCommandeFTP est une chaîne
sNomFichierSurServeurFTP est une chaîne
sCheminFichierSurServeurFTP est une chaîne
sRéponseServeurFTP, sDonnéesDuServeurFTP sont des chaînes
// Variables pour les tests
sUnNomDeFichier est une chaîne
IndiceFichier est un entier
bFichierTrouveSurServeur est un booléen
sAdresseServeurFTP = "192.5.58.47"
sNomCompteFTP = "MonCompteFTP"
sPasseFTP = "pass"
// Connexion FTP
nIDConnexion = FTPConnecte(sAdresseServeurFTP, sNomCompteFTP, sPasseFTP)
SI nIDConnexion <> -1 ALORS
// La connexion est Ok
// Nom du fichier à récupérer
sNomFichierSurServeurFTP = "Majprod.zip"
sCheminFichierSurServeurFTP = "RepMaj" //(chemin avec des "/" et PAS des "\")
// Spécification du répertoire dans lequel il y a le fichier à récupérer
SI FTPRepEnCours(nIDConnexion, sCheminFichierSurServeurFTP) = Faux ALORS
Erreur(ChaîneConstruit("Impossible de se positionner sur" + ...
"le répertoire %1 sur le serveur FTP.", ...
sCheminFichierSurServeurFTP), ErreurInfo())
FIN
// Récupération de la liste des fichiers du répertoire courant par
// la fonction du WLangage "FTPCommande" et la commande FTP "LIST"
// Nom de la commande FTP
sNomCommandeFTP = "LIST"//peut s'obtenir aussi avec la commande FTPListeFichier
// Demande de la liste des fichiers du répertoire courant
SI FTPCommande(nIDConnexion, "LIST", ...
sRéponseServeurFTP, sDonnéesDuServeurFTP) = Faux ALORS
// Echec de la commande FTP
Erreur(ChaîneConstruit("Echec de la commande %1. " + ...
"Réponse du serveur FTP : %2", sNomCommandeFTP, ...
sRéponseServeurFTP), ErreurInfo())
SINON
// On vérifie que le nom du fichier spécifié existe bien sur le serveur FTP
IndiceFichier = 1
BOUCLE
// Un nom complet de fichier sur le serveur FTP
// (avec la date, l'heure et les attributs)
sUnNomDeFichier = ExtraitChaîne(sDonnéesDuServeurFTP, IndiceFichier, RC)
SI sUnNomDeFichier = EOT ALORS SORTIR
// Nom du fichier seul (sans la date, ni l'heure, ni les attributs)
sUnNomDeFichier = sUnNomDeFichier[[40 À]]
// C'est le fichier recherché ? (sans vérification de la casse)
SI sUnNomDeFichier ~= sNomFichierSurServeurFTP ALORS SORTIR
IndiceFichier++
FIN
// Fichier trouvé ?
SI bFichierTrouveSurServeur = Faux ALORS
// Liste des fichiers du répertoire en cours sur le serveur
Erreur(ChaîneConstruit("Le fichier %1 n'a pas été trouvé" +...
" sur le serveur FTP. Voici la liste des fichiers du répertoire en cours" +...
" sur le serveur FTP :" + ...
RC + "%2", sNomFichierSurServeurFTP, sDonnéesDuServeurFTP))
FIN
FIN
SI bFichierTrouveSurServeur = Vrai ALORS
// Le fichier existe bien sur le serveur FTP, on le récupère
// récupération du fichier par la fonction du WLangage "FTPCommande"
// et la commande FTP "RETR"
// Nom de la commande FTP
sNomCommandeFTP = "RETR" // peut s'obtenir aussi avec la commande FTPRécupère
SI FTPCommande(nIDConnexion, sNomCommandeFTP + " " + ...
sNomFichierSurServeurFTP, sRéponseServeurFTP, ...
sDonnéesDuServeurFTP) = Faux ALORS
// Echec de la commande FTP
Erreur(ChaîneConstruit("Echec de la commande %1. Réponse du serveur FTP : %2", ...
sNomCommandeFTP,sRéponseServeurFTP), ErreurInfo())
SINON
// Données bien récupérées,
// les données du fichier "sNomFichierSurServeurFTP"
// sont dans "sDonnéesDuServeurFTP"
Info(ChaîneConstruit("La récupération du fichier %1 s'est bien déroulée," + ...
"cliquez sur OK pour l'enregistrer sur le disque local", ...
sNomFichierSurServeurFTP))
// Enregistrement des données du fichier en local
// (dans le répertoire en cours sans chemin)
SI fSauveTexte(sNomFichierSurServeurFTP, ...
sDonnéesDuServeurFTP) = Faux ALORS
Erreur("Impossible d'enregistrer les données récupérées", ErreurInfo())
FIN
FIN
FIN
// Déconnexion
FTPDéconnecte(nIDConnexion)
Info("Connexion FTP terminé")
SINON
Erreur("La connexion au serveur FTP a échoué", ErreurInfo())
FIN