Upload FTP

Résolu
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011 - 10 juil. 2008 à 15:17
cs_niky Messages postés 168 Date d'inscription jeudi 28 juin 2001 Statut Membre Dernière intervention 18 octobre 2008 - 15 juil. 2008 à 21:51
Bonjour,

Je travaille actuellement sur un programme dans lequel je dois effectuer un upload des fichiers contenus dans un repertoire.

J'utilise la procédure suivante:

WebClient wc = new WebClient();
            foreach (string image in System.IO.Directory.GetFiles("c:\\KK\\temp\\temp2"))
            {
               
                   wc.UploadFile("ftp://" + Settings_var.log + ":" + Settings_var.pass + "@" + Settings_var.host, "STOR", image);
            
            }

Malheureusement, il ne se produit absolument rien.
En plaçant un espion sur l'expression "wc.UploadFile("ftp://" + Settings_var.log + ":" + Settings_var.pass + "@" + Settings_var.host, "STOR", image);" apparait le message suivant: "cette expression provoque des effets secondaires et ne sera pas évaluée...

J'ai tenté d'utiliser la librairie EDTFTP via le code suivant:

FTPClient ftp = new FTPClient(Settings_var.host);
            ftp.Login(Settings_var.log, Settings_var.pass);
            foreach (string image in System.IO.Directory.GetFiles("c:\\KK\\temp\\temp2"))
            {
                ftp.Put(image, image, true);
            }
Même résultat: rien et toujours le même message sur l'espion...

Auriez vous une idée ?

En vous remerciant par avance,
Cordialement,
Anz.
A voir également:

8 réponses

cs_niky Messages postés 168 Date d'inscription jeudi 28 juin 2001 Statut Membre Dernière intervention 18 octobre 2008 7
11 juil. 2008 à 19:42
Salut,

Je me permet de te répondre ne te proposant une autre solution que celle que tu emploies.

Le code suivant permet d'obtenir un flux ouvert en écriture sur un serveur FTP :

            FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://domaine.com/fichier.ext");
            CredentialCache cred = new CredentialCache();
            cred.Add("ftp://domaine.com/fichier.ext",
                        "Basic",
                        new NetworkCredential("login", "password"));
            request.Credentials = cred;
            request.Method = WebRequestMethods.Ftp.UploadFile;
            System.IO.Stream stream = request.GetRequestStream();

J'espère que ça pourra t'aider.
1
cs_niky Messages postés 168 Date d'inscription jeudi 28 juin 2001 Statut Membre Dernière intervention 18 octobre 2008 7
15 juil. 2008 à 21:51
Le débuggeur de Visual Studio te permet de visualiser l'état de tes variables en temps réel. C'est à dire que tu peux parcourir l'état mémoire des classes avec liens qui les unissent et la valeur des attributs.
Toutefois, comment veux-tu que Visual Studio t'affiche le résultat d'une méthode ? Pour qu'il puisse le faire, il faudrait qu'il l'exécute. Mais s'il l'exécute, est-ce que cette exécution est réversible ? (exemple : la méthode supprime tous les fichiers du disque et renvoie le nombre de fichiers supprimés) est-ce que cette méthode est exécutable ? (exemple : ses préconditions ne sont remplies dans l'état actuel du programme / la méthode prend des arguments... comment Visual Studio doit-il les remplir ?), etc.

C'est pourquoi il te dit : "Cette expression provoque des effets secondaires et ne sera pas évaluée".
1
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
11 juil. 2008 à 18:23
Toujours pas d'idées ? :s
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
13 juil. 2008 à 21:22
Bonjour et merci à toi,

Je n'arrive pas à saisir à quel moment tu définit le path en local du fichier à envoyer vers le ftp.
Pourrais-tu m'éclaircir ce point ?

Merci encore de ton attention,
Cordialement,

Anz.
0

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

Posez votre question
cs_niky Messages postés 168 Date d'inscription jeudi 28 juin 2001 Statut Membre Dernière intervention 18 octobre 2008 7
13 juil. 2008 à 21:54
C'est que je ne le défini pas.
Lorsque tu fais appelles à request.GetRequestStream(), tu obtiens un flux ouvert en écriture. A toi d'écrire ce que tu veux dedans.

Typiquement, à toi d'ouvrir un fichier en lecture et d'écrire ce que tu lis dans le flux FTP.
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
14 juil. 2008 à 14:49
Hmm,
Donc la méthode getRequestStream() ouvre une boîte de dialogue ? Parce qu' au final, j'ai toujours du mal à saisir à quel moment il va m'être proposé de définir le chemin vers le fichier.

Mais je vais tester ça et revenir vers toi en cas d'incompréhension. Merci encore.
0
cs_niky Messages postés 168 Date d'inscription jeudi 28 juin 2001 Statut Membre Dernière intervention 18 octobre 2008 7
14 juil. 2008 à 15:07
V'là la solution :

            // Ouverture d'un fichier
            using (System.IO.FileStream fs = new System.IO.FileStream(@"c:\monfichier.txt", System.IO.FileAccess.Read))
            {
                // Déclaration d'un tampon de lecture de 255 octets (c'est arbitraire comme valeur)
                byte[] buffer = new byte[0xff];
                int count = 0;
                // Lit dans le fichier jusqu'à arriver au bout du fichier
                while ((count = fs.Read(buffer, 0, 0xff)) > 0)
                {
                    // Ecrit dans le flux FTP
                    stream.Write(buffer, 0, count);
                }
            }

// ... et on n'oublie pas de fermer le flux FTP
stream.Close();
stream.Dispose();
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
15 juil. 2008 à 21:43
Oki merci bien :)

Sinon une idée de la signification de la phrase : ""cette expression provoque des effets secondaires et ne sera pas évaluée" ?
Car maintenant elle apparait sur des méthodes qui fonctionnait très bien jusqu'alors et qui se mettent tout à coup à ne plus fonctionner: du style System.IO.Directory.Getfilename...

Cordialement,
Anz
0
Rejoignez-nous