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
Advertisements

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