IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

C# Transfert FTP - Upload


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut C# Transfert FTP - Upload
    Bonjour,
    J'ai un souci que je n'arrive pas à résoudre malgrés quelques recherches et quelques essais de differents code. Je developpe un petit client ftp qui doit transferer plusieurs fichiers en l'occurrence CSV.
    L'erreur que j'obtiens est l'erreur 530 NON CONNECTE.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    public void TransfertFTP()
            {
                Log = new List<string>();
                for (int i = 0; i <= TailleListe - 1; i++)
                {
                    try
                    {
                        Uri ServeurFtp = new Uri("ftp://ftp.cluster1.easy-hebergement.net/%2fTest");
                        FtpWebRequest ftpClient = (FtpWebRequest)WebRequest.Create(ServeurFtp);
                        ftpClient.Credentials = new System.Net.NetworkCredential("***********", "*******", "ftp://ftp.cluster1.easy-hebergement.net");
                        ftpClient.Method = System.Net.WebRequestMethods.Ftp.UploadFile;
                        ftpClient.UseBinary = true;
                        ftpClient.KeepAlive = true;
                        System.IO.FileInfo fi = new System.IO.FileInfo(pathDesFichiers + ListeFichiersTrouves[i]);
                        ftpClient.ContentLength = fi.Length;
                        byte[] buffer = new byte[4097]; //Fichier max de 4Mo
                        int bytes = 0;
                        int total_bytes = (int)fi.Length;
                        System.IO.FileStream fs = fi.OpenRead();
                        System.IO.Stream rs = ftpClient.GetRequestStream();
                        while (total_bytes > 0)
                        {
                            bytes = fs.Read(buffer, 0, buffer.Length);
                            rs.Write(buffer, 0, bytes);
                            total_bytes = total_bytes - bytes;
                        }
                        //fs.Flush();
                        fs.Close();
                        rs.Close();
                        FtpWebResponse uploadResponse = (FtpWebResponse)ftpClient.GetResponse();
                        uploadResponse.Close();
                        Deplacerfichier(ListeFichiersTrouves[i]);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Erreur Transfert FTP"+e.ToString());
                        Log.Add("Echec Transfert FTP du fichier : " + ListeFichiersTrouves[i]);
                    }
     
                }
            }

  2. #2
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2003
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 274
    Points : 372
    Points
    372
    Par défaut
    Salut,

    Tu pourrais deja retirer de ta boucle la declaration du client ftp car si tu as 100 fichiers en ce moment tu execute 100 declarations et 100 connexions.

    Un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    public void TransfertFTP()
    	{
    		Log = new List<string>();
     
    		Uri ServeurFtp = new Uri("ftp://ftp.cluster1.easy-hebergement.net/%2fTest");
    		FtpWebRequest ftpClient = (FtpWebRequest)WebRequest.Create(ServeurFtp);
    		ftpClient.Credentials = new System.Net.NetworkCredential("***********", "*******", "ftp://ftp.cluster1.easy-hebergement.net");
    		ftpClient.Method = System.Net.WebRequestMethods.Ftp.UploadFile;
    		ftpClient.UseBinary = true;
    		ftpClient.KeepAlive = true;
     
    		for (int i = 0; i <= TailleListe - 1; i++)
    		{
    			try
    			{
    				System.IO.FileInfo fi = new System.IO.FileInfo(pathDesFichiers + ListeFichiersTrouves[i]);
    				ftpClient.ContentLength = fi.Length;
    				byte[] buffer = new byte[4097]; //Fichier max de 4Mo
    				int bytes = 0;
    				int total_bytes = (int)fi.Length;
    				System.IO.FileStream fs = fi.OpenRead();
    				System.IO.Stream rs = ftpClient.GetRequestStream();
    				while (total_bytes > 0)
    				{
    					bytes = fs.Read(buffer, 0, buffer.Length);
    					rs.Write(buffer, 0, bytes);
    					total_bytes = total_bytes - bytes;
    				}
    				fs.Close();
    				rs.Close();
    				FtpWebResponse uploadResponse = (FtpWebResponse)ftpClient.GetResponse();
    				uploadResponse.Close();
    				Deplacerfichier(ListeFichiersTrouves[i]);
    			}
    			catch (Exception e)
    			{
    				Console.WriteLine("Erreur Transfert FTP"+e.ToString());
    				Log.Add("Echec Transfert FTP du fichier : " + ListeFichiersTrouves[i]);
    			}
    		}
    	}
    Ensuite, peux-tu verifier si le transfert passe pour le premier fichier ou si il se bloque apres X tentatives ?

    Il faudra penser egalement a fermer le ftpClient a la fin (je ne l'ai aps fait dans le code).

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Est-ce que ça plante dès le premier fichier, ou seulement plus tard ?

    Citation Envoyé par eagleleader Voir le message
    Tu pourrais deja retirer de ta boucle la declaration du client ftp car si tu as 100 fichiers en ce moment tu execute 100 declarations et 100 connexions.
    Tu peux sortir l'URI de la boucle, mais pas la requête... L'objet FtpWebRequest n'est pas réutilisable, il faut en recréer un à chaque fois. Mais ça ne veut pas dire que ça va se connecter 100 fois au serveur : cet objet représente une requête, pas la connexion... La connexion est gérée automatiquement, et si tu mets KeepAlive à true (ce qui est le cas ici), c'est la même connexion qui est réutilisée, donc pas de problème.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Soit dit en passant, elle est bizarre ton URL...

    "%2f", c'est le caractère "/", ce qui fait que ton URL est en fait "ftp://ftp.cluster1.easy-hebergement.net//Test". C'est peut-être ça qui pose problème... essaie d'enlever le "%2f"

Discussions similaires

  1. mode de transfert FTP
    Par ben_popcorn dans le forum MFC
    Réponses: 2
    Dernier message: 19/09/2005, 10h02
  2. Réponses: 2
    Dernier message: 21/06/2005, 21h18
  3. transfert ftp avec le composant
    Par sillycoder dans le forum Composants VCL
    Réponses: 3
    Dernier message: 19/05/2005, 09h35
  4. Transfert FTP répétitif et perte de fichiers
    Par Harry dans le forum Développement
    Réponses: 3
    Dernier message: 24/06/2004, 15h15
  5. Problème de transfert FTP sous IIS
    Par thanathz dans le forum Développement
    Réponses: 2
    Dernier message: 12/07/2002, 15h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo