Upload FTP [Résolu]

cs_ansizak 191 Messages postés mercredi 11 juillet 2007Date d'inscription 30 juin 2011 Dernière intervention - 10 juil. 2008 à 15:17 - Dernière réponse : cs_niky 168 Messages postés jeudi 28 juin 2001Date d'inscription 18 octobre 2008 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
cs_niky 168 Messages postés jeudi 28 juin 2001Date d'inscription 18 octobre 2008 Dernière intervention - 11 juil. 2008 à 19:42
1
Merci
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.

Merci cs_niky 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de cs_niky
Meilleure réponse
cs_niky 168 Messages postés jeudi 28 juin 2001Date d'inscription 18 octobre 2008 Dernière intervention - 15 juil. 2008 à 21:51
1
Merci
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".

Merci cs_niky 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de cs_niky
cs_ansizak 191 Messages postés mercredi 11 juillet 2007Date d'inscription 30 juin 2011 Dernière intervention - 11 juil. 2008 à 18:23
0
Merci
Toujours pas d'idées ? :s
Commenter la réponse de cs_ansizak
cs_ansizak 191 Messages postés mercredi 11 juillet 2007Date d'inscription 30 juin 2011 Dernière intervention - 13 juil. 2008 à 21:22
0
Merci
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.
Commenter la réponse de cs_ansizak
cs_niky 168 Messages postés jeudi 28 juin 2001Date d'inscription 18 octobre 2008 Dernière intervention - 13 juil. 2008 à 21:54
0
Merci
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.
Commenter la réponse de cs_niky
cs_ansizak 191 Messages postés mercredi 11 juillet 2007Date d'inscription 30 juin 2011 Dernière intervention - 14 juil. 2008 à 14:49
0
Merci
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.
Commenter la réponse de cs_ansizak
cs_niky 168 Messages postés jeudi 28 juin 2001Date d'inscription 18 octobre 2008 Dernière intervention - 14 juil. 2008 à 15:07
0
Merci
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();
Commenter la réponse de cs_niky
cs_ansizak 191 Messages postés mercredi 11 juillet 2007Date d'inscription 30 juin 2011 Dernière intervention - 15 juil. 2008 à 21:43
0
Merci
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
Commenter la réponse de cs_ansizak

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.