Télécharger le contenu d'un répertoire par FTP

Résolu
Signaler
Messages postés
8
Date d'inscription
jeudi 8 janvier 2009
Statut
Membre
Dernière intervention
11 novembre 2010
-
Messages postés
8
Date d'inscription
jeudi 8 janvier 2009
Statut
Membre
Dernière intervention
11 novembre 2010
-
Bonsoir,
Je souhaite télécharger le contenu d'un répertoire sur un server FTP de manière automatisée [commande mget * en FTP] en local. J'arrive à télécharger fichiers par fichiers grâce à WebClient &
DownloadFile mais pas l'ensemble du directory. [?!]. ça doit bien exister

Merci de votre réponse

2 réponses


Le FtpWebRequest fera l'affaire mais il y en a des milliers, petit exemple :

request = (FtpWebRequest)FtpWebRequest.Create("ftp://" + serveurSource + racineSource);
                request.Method = WebRequestMethods.Ftp.ListDirectory;
                request.Credentials = new NetworkCredential(userSource, passSource);
                request.UsePassive = true;
                request.UseBinary = true;
                request.KeepAlive = false;

                rep = request.GetResponse();
                sr = new StreamReader(rep.GetResponseStream());

                buffer = new byte[1024];

                ligne = sr.ReadLine();
                i = 0;
                while (ligne != null)
                {
                    if (ligne != "ERRORS")
                    {
                        request = (FtpWebRequest)FtpWebRequest.Create("ftp://" + serveurSource + racineSource + "/" + ligne);
                        request.Credentials = new NetworkCredential(userSource, passSource);
                        request.Method = WebRequestMethods.Ftp.DownloadFile;
                        rep = request.GetResponse();

                        sm = rep.GetResponseStream();

                        output = new FileStream("C:\\FTP_TMP\" + ligne, FileMode.OpenOrCreate);
                        bytesRead = 0;

                        i = 0;
                        while (true)
                        {
                            i++;
                            bytesRead = sm.Read(buffer, 0, buffer.Length);
                            label1.Text = i.ToString() + " Ko";

                            output.Write(buffer, 0, bytesRead);
                            if (bytesRead <= 0)
                            {
                                break;
                            }
                        }
                        output.Close();
                    }
                    ligne = sr.ReadLine();
                }

                sr.Close();
                request.Abort();

Bon c'est un vieux code que j'ai fait du coup il vaut ce qu'il vaut :D
Il doit pas être complet
Le savoir ne vaut rien s'il n'est pas partagé
Messages postés
8
Date d'inscription
jeudi 8 janvier 2009
Statut
Membre
Dernière intervention
11 novembre 2010

Merci pour ta réponse et ton code.
J'étais partis dans  la même direction.

Bonne journée