c# : Synchronisation FTP grâce à FtpSync

FtpSync est une librairie gratuite qui permet de faire de la synchronisation FTP, elle s’utilise :

  • En ligne de commande
  • Avec un fichier INI de configuration
Prerequis:
Télécharger le package FTPSynch qui contient :
  • Le .exe
  • Les dll
  • Des Exemples de fichiers .ini
  • Un exemple de fichier bat qui permet de lancer le .exe
Téléchargeable ici

Utilisation:
Voici une classe en C# utilisée dans un projet d’application console (qui n’est pas de moi) qui permet de l’utiliser.
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Diagnostics;

namespace FtpSync
{
    class FtpSyncSynchro
    {
        public bool ShowUI = true;

        static void Main(string[] args)
        {
            FtpSyncSynchro _o = new FtpSyncSynchro();
            _o.LaunchFTPSyncProcess();
        }

        private  void LaunchFTPSyncProcess()
        {
            using (Process ftpsyncProcess = new Process())
            {
                ftpsyncProcess.StartInfo.RedirectStandardError = true;
                ftpsyncProcess.StartInfo.StandardErrorEncoding = Encoding.UTF8;
                ftpsyncProcess.ErrorDataReceived += new DataReceivedEventHandler(OnProcessErrorOutput);

                ftpsyncProcess.StartInfo.Arguments = Path.GetFileNameWithoutExtension(GetIniFileName()) + " /INCREMENTAL";
                if (!ShowUI)
                {
                    ftpsyncProcess.StartInfo.Arguments += " /QUIET";
                }
                ftpsyncProcess.StartInfo.FileName = GetFTPSyncExePath();
                ftpsyncProcess.StartInfo.RedirectStandardOutput = true;
                ftpsyncProcess.StartInfo.StandardOutputEncoding = Encoding.UTF8;
                ftpsyncProcess.StartInfo.UseShellExecute = false;
                ftpsyncProcess.StartInfo.CreateNoWindow = true;
                ftpsyncProcess.StartInfo.ErrorDialog = false;
                ftpsyncProcess.Start();
                ftpsyncProcess.BeginErrorReadLine();
                ftpsyncProcess.WaitForExit(); // allows the process to end within 1 minute
                var exitCode = ftpsyncProcess.ExitCode;
                ftpsyncProcess.Close();
                ftpsyncProcess.Dispose();
                switch (exitCode)
                {
                    case 0:
                        //synchronization was successful
                        return;
                    case 1:
                        throw new Exception("could not connect to FTP server (either source or destination)");
                    case 2:
                        throw new Exception("error during copy (some files where probably copied, but not all; or aborted by user)");
                    case 3:
                        throw new Exception("error during directory parsing (connection was successful, but FTPSync was unable to read source directory and build file index; no copying has been done)");
                    case 4:
                        throw new Exception("initialization error (most likely, something is wrong in the .INI file)");
                }

            }
        }

        public void OnProcessErrorOutput(Object process, DataReceivedEventArgs errLine)
        {

        }

        private string GetIniFileName()
        {
            return "uploadfcg";
        }

        private string GetFTPSyncExePath()
        {
            return GetFTPSyncExeDirectory() + Path.DirectorySeparatorChar + "FTPSync.exe";
        }

        private string GetFTPSyncExeDirectory()
        {
            //get the full location of the assembly with DaoTests in it
            string fullPath = System.Reflection.Assembly.GetAssembly(typeof(FtpSyncSynchro)).Location;

            //get the folder that's in
            return Path.GetDirectoryName(fullPath) ;
        }

    }
}
Explications:
– La méthode Main lance le programme

– La méthode LaunchFTPSyncProcess fait le traitement de synchronisation:

A la ligne 29 , on précise les arguments , voici ceux utilisés dans mon exemple:
* le chemin du fichier INI
* le mode INCREMENTAL
* le mode silencieux QUIET
La ligne 34 récupere le chemin physique du .exe
A partir de la ligne 46 il s’agit du traitement de code de retour.
En savoir plus 
site officiel avec toutes les informations nécessaires

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s