Actualites  Archives

The domain name sam-mag.com is available for sale!

 Inscription | Plan du site | 8  visiteurs actifs  
  
     A la Une
  Actualités
  Dossiers
  Coin Technique
  Annonces Web
  Référencement

     Diagnostic
  Popularité Site Web
  Positionnement Moteur
  WebPage Alerte
  Positionnement Google

     Archives
  Sélection
  Expérience qui parle
  Internet quotidien
  Tous les dossiers

     Services
  Communiqués de Presse

     Contact
  Nous contacter
  La protection des données personnelles

     Technique
  Merise

     Login
   
    
Inscription

Mot de passe oublié?

   Sondage
Les points que vous souhaitez voir traiter à l'avenir ?
5%Actualité
28%Documentation
53%Exemples de sources
3%Liste de liens
12%Revue logiciels

   Sondage
Vous vous intéressez plutôt à
76%Programmation
11%Système
8%Logiciel
5%Matériel

   Sondage
votre niveau technique ?
15%Amateur
46%Débutant
32%Professionnel
8%Expert

     Rechercher
    
   

 Actualités > Coin Technique


code source C# : Composant FTP

Voici le code source d'un composant FTP ainsi qu'un squelette d'application cliente FTP utilisant ce composant.
Les fonctionnalités FTP de base sont implémentées (Dir, Download, Upload, Delete, Rename, ...).

Il s'agit là d'un exemple de code, et non d'une application complète testée.
Vous pouvez l'utiliser librement l'application, mais des bugs peuvent survenir lors de l'utilisation.

Télécharger le code source : FTPCom.zip (31 Ko)
Télécharger l'exécutable : FTPComExe (32 Ko)

Attention, le RunTime Microsoft .Net est indispensable pour exécuter le programme. (20,4 Mb)


Voici un exemple de code pour utiliser ce composant.
L'exemple est en C#, mais vous pouvez utiliser également ce composant avec tout autre langage compatible avec le Framework .Net de Microsoft.

Utilisation du composant avec Visual Studio .Net
Ajouter le composant dans la ToolBox (customize Toolbox) et faites le glisser sur votre feuille (form).
Le code projet contient un client FTP simple.

Vous aurez peut être à changer la Référence FTPCom dans votre projet pour tester l'exemple.
Retirer l'ancienne référence et ajouter la référence (Add Reference) à FtpCom.DLL

Exemple de code

Se connecter au serveur FTP.

  ftpc.Username = EFUsername.Text;
  ftpc.Password = EFPassword.Text;

  ftpc.Hostname = CBFTPServer.Text;
  ftpc.Connect();

Une fois la connection établie, l'objet reçoit l'événement Connected, il est alors possible d'envoyer la commande Login.

  private void ftpc_Connected(object sender, FTPCom.FTPEventArgs e)
  {
    ftpc.Login();
  }

L'événement Logged est envoyé après une connection réussie.
La méthode Dir() permet d'obtenir la liste des fichiers d'un dossier, ici la racine du serveur.

  private void ftpc_Logged(object sender, FTPCom.FTPEventArgs e)
  {
    ftpc.Dir();
  }

L'événement DirCompleted Event est reçu quand la commande Dir est terminée.
La propriété FileCount contient le nombre de fichiers, utilisez IsFolder() pour détecter s'il s'agit d'un fichier ou d'un dossier.
GetFileName() et GetFileSize() retournent le nom et la taille des fichiers

Note : Une collection de fichiers devrait être implémentée ici ! pour l'instant j'utilise un tableau.

      
  private void ftpc_DirCompleted(object sender, FTPCom.FTPEventArgs e)
  {
    int i = 0;
    int idimage = 0;
    string msg;

    msg = "Transfered " + e.TotalBytes.ToString() + " bytes in " + 
((float)e.TimeElapsed / 1000).ToString() + " seconds" + CRLF; TextLog.SelectionColor = Color.Black; TextLog.AppendText(msg); ServerView.BeginUpdate(); ServerView.Items.Clear(); ImgListServerSmall.Images.Clear(); ListViewItem lvItem = new ListViewItem(".."); ServerView.Items.Add(lvItem); for (i = 0; i < ftpc.FileCount; i++) { if (ftpc.IsFolder(i)) { string[] items = new String[2]; items[0] = ftpc.GetFileName(i); items[1] = ftpc.GetFileSize(i).ToString(); ImgListServerSmall.Images.Add (m_IconFolder); ServerView.Items.Add(new ListViewItem(items, idimage++)); } } for (i = 0; i < ftpc.FileCount; i++) { if (!ftpc.IsFolder(i)) { string[] items = new String[2]; items[0] = ftpc.GetFileName(i); items[1] = ftpc.GetFileSize(i).ToString(); ImgListServerSmall.Images.Add (ExtractIcon.GetIcon(items[0], false)); ServerView.Items.Add(new ListViewItem(items, idimage++)); } } ServerView.EndUpdate(); this.Cursor = Cursors.Default; }

Pour Télécharger un fichier sur un glisser déposer dans la fenêtre locale :

  
  private void ServerView_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
  {
    if (e.Button != 0)
    {
      string msg = "";

      for (int i = 0; i < ServerView.SelectedItems.Count; i++)
      {
        msg += ServerView.SelectedItems[i].Text + "\n";
      }

      ServerView.DoDragDrop(msg, DragDropEffects.Copy | DragDropEffects.Move);
    }
  }

  private void LocalView_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
  {
    if (e.Data.GetDataPresent(DataFormats.Text)) 
      e.Effect = DragDropEffects.Copy;
    else
      e.Effect = DragDropEffects.None;    
  }

  private void LocalView_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
  {
    string msg = e.Data.GetData(DataFormats.Text).ToString();

    string[] filename = msg.Split(new char[] { '\n' });
    foreach (string sfile in filename)
    {
      ftpc.FileDownload(sfile);
    }
  }

Une fois le téléchargement terminé, l'événement FileDownloadCompleted est émis

  private void ftpc_FileDownloadCompleted(object sender, FTPCom.FTPEventArgs e)
  {
    string msg = "Transfered " + e.TotalBytes.ToString() + " bytes in "   
+ ((float)e.TimeElapsed / 1000).ToString() + " seconds" + CRLF; TextLog.SelectionColor = Color.Black; TextLog.AppendText(msg); FillLocalView(m_currentFolder); }

Suppression des fichiers sélectionnés

  for (int i = 0; i < ServerView.SelectedItems.Count; i++)
  {
    ftpc.Delete (ServerView.SelectedItems[i].Text);
  }
  ftpc.Dir();
  

Renommer un fichier

  private void ServerView_AfterLabelEdit(object sender, 
System.Windows.Forms.LabelEditEventArgs e) { if (e.Label != null) { this.Cursor = Cursors.WaitCursor; string newfilename = e.Label; if (m_previousfilename == "New Folder") { ftpc.DirCreate(newfilename); } else { ftpc.Rename(m_previousfilename, newfilename); } ftpc.Dir(); } }

Fermer la connection

  ftpc.Disconnect();
  ServerView.Items.Clear();
J'espère que cet exemple vous sera utile, les commentaires sont les bienvenus.

Jérôme Lacaille
Ingénieur développeur
Spécialiste en Nouvelles Technologies

Webmastering / Développement

 Imprimer Donner votre avis

 
 

Sam-Mag - Un site du réseau ACORUS 1996-2007
© Copyright ACORUS All rights reserved.- Mentions légales

Ce site respecte la loi Informatique et Libertés. Pour en savoir plus sur la protection des données personnelles, cliquez

 
Webmaster