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

Contribuez .NET Discussion :

Classe de gestion transfert FTP


Sujet :

Contribuez .NET

  1. #1
    Robot Forum
    Avatar de forum
    Inscrit en
    novembre 1999
    Messages
    2 577
    Détails du profil
    Informations forums :
    Inscription : novembre 1999
    Messages : 2 577
    Points : 2 499
    Points
    2 499
    Par défaut Classe de gestion transfert FTP
    Bonjour,

    Je vous propose un nouvel élément à utiliser : Classe de gestion transfert FTP

    C'est simplement une classe de gestion de transfert de fichier via ftp / ftps en csharp.

    Elle gère notamment le download, uploade, append de fichier.

    Elle donne aussi des infos comme la taille d'un fichier, le contenu d'un dossier etc...

    Vous pourrez aussi renommer des éléments, vérifier si un élément existe etc...



    rappel important :

    Vous ne pourrez pas vous connecter en sftp avec cette classe.

    sftp utilise le protocole ssh et pas ftp.



    ---

    Developpé sous Visual Studio 2017, C# .



    Version 1.0

    Qu'en pensez-vous ?

  2. #2
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : mai 2007
    Messages : 2 954
    Points : 14 976
    Points
    14 976
    Par défaut
    Salut

    Y a selon moi beaucoup de choses à améliorer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    GestFtp gestFtp = new GestFtp();
    string foo = null;
    bool bar = gestFtp.Create_Directory(foo);
    • Ton code vient de lancer une NullReferenceException non gérée
    • En l'état, ta classe devrait être statique (je te laisse te demander pourquoi)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public string Cnx_LocalDefault_FolderPath = @"C:\temp\";
    • Pas moyen que ce genre de chose se trouve en dur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    System.Net.FtpWebResponse Ftp_Response = (System.Net.FtpWebResponse)Ftp_Request.GetResponse();
    Ftp_Response.Close();
    • Tu devrais regarder les blocs using (cf. doc) plutôt que de t'embêter avec les Close() (dans ton cas c'est valable pour toutes tes réponses FTP, tes streams etc.)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Ftp_Request.GetResponse();
    // ...
    catch (Exception ex)
    {
    	Ftp_Error(ex);
    	return false;
    }
    • Tu devrais te contenter de catcher les exceptions référencées sur la doc (donc ici InvalidOperationException et WebException). En catchant l'exception de plus haut niveau, tu peux masquer des erreurs qui ne sont pas de ton ressort et qui devraient remonter directement à l'appelant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public bool Cnx_UseBinary = true;                         // Bascule entre transfert de données binaire(True) ou ascii(False).
    public bool Cnx_UsePassive = true;                         // Cnx_UsePassive = False si le processus de transfert de données de l'application cliente est à l'écoute d'une connexion sur le port de données
                                                                       // Cnx_UsePassive = True si le client doit initialiser une connexion sur le port de données.
     
    public bool Cnx_KeepAlive = true;                         // Activation des connexions persistantes
    • Tout ça, soit t'es sur une classe statique et ça se passe en paramètre d'entrée de toutes les méthodes qui font une connexion FTP, soit t'es sur une classe normale et idem dans chaque méthode ou alors dans un constructeur (et d'autres constructeurs qui ont des valeurs par défaut), mais pas figé comme ça
    • Plutôt que de renvoyer des booléens partout, la classe FtpWebResponse elle a plein d'infos utiles comme StatusCode ou StatusDescription
    • Tu veux que ce soit utilisé dans un contexte pro, alors ajoute impérativement la possibilité de passer à travers un proxy
    • Tu devrais faire un tour sur les conventions de nommage en C#, ça faciliterait la lecture de tes sources pour tout le monde
    • Dans son ensemble, ta classe n'apporte rien de plus que ce qu'on peut trouver sur la doc présente sur le MSDN


    Il y a certainement des choses à ajouter, mais je m'arrête là

  3. #3
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2018
    Messages : 20
    Points : 421
    Points
    421
    Par défaut
    Salut,

    Comme je te l'ai dit dans une autre discussion, il s'agit d'une classe csharp totalement classique et simple à comprendre, mais qui fais le job.
    Je vais essayer de lui apporter quelques corrections pour aller dans le cens de tes remarques.
    Je vais aussi essayer de lui apporter dans les prochaines versions quelques méthodes complémentaires comme la distinction entre dossier et fichier
    ( liste de dossiers uniquement, ou de fichiers uniquement, ou fichier avec une certaines extensions ), ce qui n'est pas possible ( si j'ai bien compris ) de faire de façon directe par l'usage de fonction toute faite.
    S'il existe des choses genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
    Rien ne me dit que la chaine ftp, sera strictement la meme selon le type de serveur et son système.
    La lettre "d" indique que c'est un directory mais la chaine d'info de permission (drwx) est elle toujours au meme endroit ? ( en claire : est ce que c'est équivalent au ls -l qui lui est posix ) …

    Il faut que je me renseigne. Mais si tu as des idées n'hésite pas.

Discussions similaires

  1. transfert ftp avec le composant
    Par sillycoder dans le forum Composants VCL
    Réponses: 3
    Dernier message: 19/05/2005, 10h35
  2. Classe de gestion des images
    Par tlemcenvisit dans le forum MFC
    Réponses: 2
    Dernier message: 03/05/2005, 20h07
  3. Class de gestion des images avec rotation
    Par Johnny Boy dans le forum MFC
    Réponses: 1
    Dernier message: 03/05/2005, 12h54
  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, 16h15
  5. Problème de transfert FTP sous IIS
    Par thanathz dans le forum Développement
    Réponses: 2
    Dernier message: 12/07/2002, 16h27

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