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

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

Votre réponse

2 réponses

Meilleure réponse
Messages postés
141
Date d'inscription
samedi 21 août 2004
Dernière intervention
8 juin 2010
9 janv. 2009 à 08:48
3
Merci
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é

Merci dadamagouil 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de dadamagouil
Messages postés
8
Date d'inscription
jeudi 8 janvier 2009
Dernière intervention
11 novembre 2010
9 janv. 2009 à 11:03
0
Merci
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.