Télécharger le contenu d'un répertoire par FTP [Résolu]

stever50 8 Messages postés jeudi 8 janvier 2009Date d'inscription 11 novembre 2010 Dernière intervention - 8 janv. 2009 à 18:25 - Dernière réponse : stever50 8 Messages postés jeudi 8 janvier 2009Date d'inscription 11 novembre 2010 Dernière intervention
- 9 janv. 2009 à 11:03
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
Afficher la suite 

2 réponses

Répondre au sujet
dadamagouil 141 Messages postés samedi 21 août 2004Date d'inscription 8 juin 2010 Dernière intervention - 9 janv. 2009 à 08:48
+3
Utile
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é
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de dadamagouil
stever50 8 Messages postés jeudi 8 janvier 2009Date d'inscription 11 novembre 2010 Dernière intervention - 9 janv. 2009 à 11:03
0
Utile
Merci pour ta réponse et ton code.
J'étais partis dans  la même direction.

Bonne journée
Commenter la réponse de stever50

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.