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 :

Connexions a un serveur FTP.


Sujet :

C#

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Par défaut Connexions a un serveur FTP.
    Bonjour,
    Je débute en C#, et je me heurte a une question.
    Je vous explique mon problème :

    Je créer une application pour synchroniser des fichiers entre un PC et un FTP.

    Voilà comment je me connecte et comment je vérifie l'existance ou non du fichier :

    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
     
    string sHote = "ftp://monsite/mondossier/";
    string sLogin = "monlogin";
    string sMdP = "MdP";
    FtpWebResponse ftpResponse = null;
    StreamReader reader = null;
     
    // Connexion au FTP
    FtpWebRequest fRequeteFTP = (FtpWebRequest.Create(new Uri(sHote)) as FtpWebRequest);
    fRequeteFTP.Credentials = new NetworkCredential(sLogin, sMdP); // Login et MDP
     
    for (int i = 0; i <= nbFichiers - 1; i++)
    {
       string sFichier = "test.txt";
       string sCheminFichier = "ftp://monsite/mondossier/test.txt";
       fRequeteFTP.Method = WebRequestMethods.Ftp.ListDirectory;
       ftpResponse = (fRequeteFTP.GetResponse() as FtpWebResponse);
       reader = new StreamReader(ftpResponse.GetResponseStream()); 
       while (!reader.EndOfStream) // Je passe les fichiers du répertoire FTP un par un
       {
          string readLine = reader.ReadLine();
          int compare = readLine.CompareTo(sFichier);
          if (compare == 0) // Le fichier existe
          {
             // ICI ICI
          }
       }
    }
    Voilà, donc a la ligne // ICI ICI, je sais que mon fichier existe déjà sur le FTP.
    Donc je veut récupérer la date de dernière modification de cette facon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://user:pass@host/filepath");
    request.Method = WebRequestMethods.Ftp.GetDateTimestamp;
    FtpWebResponse response = (FtpWebResponse)request.GetResponse();
    console.WriteLine(response.LastModified);
    Ma question est : Puis-je ouvrir une nouvelle connexion a l'intérieur de la première ?

    Car je ne peut pas utiliser ma premiere connexion car l'URI change...
    (au début mon URI est : ftp://monsite/mondossier/
    et pour vérifier la date cela devient : ftp://monsite/mondossier/test.txt )

  2. #2
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Tu peux garder le premier objet FtpRequest et changer la méthode et refaire une requete.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 42
    Par défaut
    Merci beaucoup pour t'a réponse
    J'avais déjà une méthode qui fonctionné, mais pas très propre je pense, donc je préféré avoir un avis externe.
    Merci et bonne journée

  4. #4
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    salut,

    pour toutes les requêtes vers un FTP, j'utilise la classe ftplib : http://www.codeproject.com/KB/IP/ftplib.aspx

    c'est celle que j'ai utilisé pour mon mini client FTP et il n'y a pas grand chose a redire.
    je trouve que la manière d'accéder/d'utiliser un FTP avec .NET n'est pas pratique !


    sinon pour ta question, la réponse est oui, tu peux ouvrir une autre connexion en utilisant un nouveau FtpWebRequest -> en interne tout ceci utilise les sockets, donc si tu n'es pas a la limite des connexions autorisés (par le client ou le serveur) tu peux en ouvrir autant que tu veux (.NET gère lui meme la réutilisation des connexions).
    tu dois juste penser au try/catch pour prévoir cette erreur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Connexion sur un serveur ftp
    Par Gandus dans le forum VBA Access
    Réponses: 7
    Dernier message: 30/04/2013, 08h29
  2. Connexion avec un serveur FTP
    Par momedalhouma dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 29/04/2013, 12h54
  3. Connexion a un serveur ftp pour download
    Par thierry007 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 04/03/2008, 08h19
  4. Réponses: 6
    Dernier message: 13/06/2007, 09h20
  5. Connexion ssl et serveur ftp
    Par jeromelef dans le forum Web & réseau
    Réponses: 7
    Dernier message: 18/08/2005, 17h49

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