Advertisement
Guest User

FTP Class

a guest
Jul 13th, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 12.04 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3. using System.Net;
  4.  
  5. namespace LDAutoSave {
  6.     class FTP {
  7.  
  8.         private string host = null;
  9.         private string user = null;
  10.         private string pass = null;
  11.         private FtpWebRequest ftpRequest = null;
  12.         private FtpWebResponse ftpResponse = null;
  13.         private Stream ftpStream = null;
  14.         private int bufferSize = 2048;
  15.  
  16.         /// <summary>
  17.         /// Instance de FTP
  18.         /// </summary>
  19.         /// <param name="hostIP"></param>
  20.         /// <param name="userName"></param>
  21.         /// <param name="password"></param>
  22.         public FTP(string hostIP, string userName, string password) {
  23.             host = hostIP;
  24.             user = userName;
  25.             pass = password;
  26.         }
  27.  
  28.         /// <summary>
  29.         /// Fonction de download sur le PC
  30.         /// </summary>
  31.         /// <param name="remoteFile"></param>
  32.         /// <param name="localFile"></param>
  33.         public void download(string remoteFile, string localFile) {
  34.             try {
  35.                 ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + remoteFile);
  36.                 ftpRequest.Credentials = new NetworkCredential(user, pass);
  37.                 ftpRequest.UseBinary = true;
  38.                 ftpRequest.UsePassive = true;
  39.                 ftpRequest.KeepAlive = true;
  40.                 ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;
  41.                 ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
  42.                 ftpStream = ftpResponse.GetResponseStream();
  43.                 FileStream localFileStream = new FileStream(localFile, FileMode.Create);
  44.                 byte[] byteBuffer = new byte[bufferSize];
  45.                 int bytesRead = ftpStream.Read(byteBuffer, 0, bufferSize);
  46.                 try {
  47.                     while (bytesRead > 0) {
  48.                         localFileStream.Write(byteBuffer, 0, bytesRead);
  49.                         bytesRead = ftpStream.Read(byteBuffer, 0, bufferSize);
  50.                     }
  51.                 } catch (Exception ex) { Console.WriteLine(ex.ToString()); }
  52.                 localFileStream.Close();
  53.                 ftpStream.Close();
  54.                 ftpResponse.Close();
  55.                 ftpRequest = null;
  56.             } catch (Exception ex) { Console.WriteLine(ex.ToString()); }
  57.             return;
  58.         }
  59.  
  60.         /// <summary>
  61.         /// Fonction d'upload sur le FTP
  62.         /// </summary>
  63.         /// <param name="remoteFile"></param>
  64.         /// <param name="localFile"></param>
  65.         public void upload(string remoteFile, string localFile) {
  66.             try {
  67.                 ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + remoteFile);
  68.                 ftpRequest.Credentials = new NetworkCredential(user, pass);
  69.                 ftpRequest.UseBinary = true;
  70.                 ftpRequest.UsePassive = true;
  71.                 ftpRequest.KeepAlive = true;
  72.                 ftpRequest.Method = WebRequestMethods.Ftp.UploadFile;
  73.                 ftpStream = ftpRequest.GetRequestStream();
  74.                 FileStream localFileStream = new FileStream(localFile, FileMode.Create);
  75.                 byte[] byteBuffer = new byte[bufferSize];
  76.                 int bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize);
  77.                 try {
  78.                     while (bytesSent != 0) {
  79.                         ftpStream.Write(byteBuffer, 0, bytesSent);
  80.                         bytesSent = localFileStream.Read(byteBuffer, 0, bufferSize);
  81.                     }
  82.                 } catch (Exception ex) { Console.WriteLine(ex.ToString()); }
  83.                 localFileStream.Close();
  84.                 ftpStream.Close();
  85.                 ftpRequest = null;
  86.             } catch (Exception ex) { Console.WriteLine(ex.ToString()); }
  87.             return;
  88.         }
  89.  
  90.         /// <summary>
  91.         /// Fonction pour delete un fichier sur le FTP
  92.         /// </summary>
  93.         /// <param name="deleteFile"></param>
  94.         public void delete(string deleteFile) {
  95.             try {
  96.                 ftpRequest = (FtpWebRequest)WebRequest.Create(host + "/" + deleteFile);
  97.                 ftpRequest.Credentials = new NetworkCredential(user, pass);
  98.                 ftpRequest.UseBinary = true;
  99.                 ftpRequest.UsePassive = true;
  100.                 ftpRequest.KeepAlive = true;
  101.                 ftpRequest.Method = WebRequestMethods.Ftp.DeleteFile;
  102.                 ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
  103.                 ftpResponse.Close();
  104.                 ftpRequest = null;
  105.             } catch (Exception ex) { Console.WriteLine(ex.ToString()); }
  106.             return;
  107.         }
  108.  
  109.         /// <summary>
  110.         /// Fonction pour rename un fichier sur le FTP
  111.         /// </summary>
  112.         /// <param name="currentFileNameAndPath"></param>
  113.         /// <param name="newFileName"></param>
  114.         public void rename(string currentFileNameAndPath, string newFileName) {
  115.             try {
  116.                 ftpRequest = (FtpWebRequest)WebRequest.Create(host + "/" + currentFileNameAndPath);
  117.                 ftpRequest.Credentials = new NetworkCredential(user, pass);
  118.                 ftpRequest.UseBinary = true;
  119.                 ftpRequest.UsePassive = true;
  120.                 ftpRequest.KeepAlive = true;
  121.                 ftpRequest.Method = WebRequestMethods.Ftp.Rename;
  122.                 ftpRequest.RenameTo = newFileName;
  123.                 ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
  124.                 ftpResponse.Close();
  125.                 ftpRequest = null;
  126.             } catch (Exception ex) { Console.WriteLine(ex.ToString()); }
  127.             return;
  128.         }
  129.  
  130.         /// <summary>
  131.         /// Fonction pour crée un dossier sur le FTP
  132.         /// </summary>
  133.         /// <param name="newDirectory"></param>
  134.         public void createDirectory(string newDirectory) {
  135.             try {
  136.                 ftpRequest = (FtpWebRequest)WebRequest.Create(host + "/" + newDirectory);
  137.                 ftpRequest.Credentials = new NetworkCredential(user, pass);
  138.                 ftpRequest.UseBinary = true;
  139.                 ftpRequest.UsePassive = true;
  140.                 ftpRequest.KeepAlive = true;
  141.                 ftpRequest.Method = WebRequestMethods.Ftp.MakeDirectory;
  142.                 ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
  143.                 ftpResponse.Close();
  144.                 ftpRequest = null;
  145.             } catch (Exception ex) { Console.WriteLine(ex.ToString()); }
  146.             return;
  147.         }
  148.  
  149.         /// <summary>
  150.         /// Fonction pour crée un fichier sur le FTP
  151.         /// </summary>
  152.         /// <param name="fileName"></param>
  153.         /// <returns></returns>
  154.         public string getFileCreatedDateTime(string fileName) {
  155.             try {
  156.                 ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + fileName);
  157.                 ftpRequest.Credentials = new NetworkCredential(user, pass);
  158.                 ftpRequest.UseBinary = true;
  159.                 ftpRequest.UsePassive = true;
  160.                 ftpRequest.KeepAlive = true;
  161.                 ftpRequest.Method = WebRequestMethods.Ftp.GetDateTimestamp;
  162.                 ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
  163.                 ftpStream = ftpResponse.GetResponseStream();
  164.                 StreamReader ftpReader = new StreamReader(ftpStream);
  165.                 string fileInfo = null;
  166.                 try { fileInfo = ftpReader.ReadToEnd(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); }
  167.                 ftpReader.Close();
  168.                 ftpStream.Close();
  169.                 ftpResponse.Close();
  170.                 ftpRequest = null;
  171.                 return fileInfo;
  172.             } catch (Exception ex) { Console.WriteLine(ex.ToString()); }
  173.             return "";
  174.         }
  175.  
  176.         /// <summary>
  177.         /// Fonction de récupération de la taille d'un fichier sur le FTP
  178.         /// </summary>
  179.         /// <param name="fileName"></param>
  180.         /// <returns></returns>
  181.         public string getFileSize(string fileName) {
  182.             try {
  183.                 ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + fileName);
  184.                 ftpRequest.Credentials = new NetworkCredential(user, pass);
  185.                 ftpRequest.UseBinary = true;
  186.                 ftpRequest.UsePassive = true;
  187.                 ftpRequest.KeepAlive = true;
  188.                 ftpRequest.Method = WebRequestMethods.Ftp.GetFileSize;
  189.                 ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
  190.                 ftpStream = ftpResponse.GetResponseStream();
  191.                 StreamReader ftpReader = new StreamReader(ftpStream);
  192.                 string fileInfo = null;
  193.                 try { while (ftpReader.Peek() != -1) { fileInfo = ftpReader.ReadToEnd(); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); }
  194.                 ftpReader.Close();
  195.                 ftpStream.Close();
  196.                 ftpResponse.Close();
  197.                 ftpRequest = null;
  198.                 return fileInfo;
  199.             } catch (Exception ex) { Console.WriteLine(ex.ToString()); }
  200.             return "";
  201.         }
  202.  
  203.         /// <summary>
  204.         /// Fonction de récupération d'une liste de fichier sur le FTP (uniquement le nom)
  205.         /// </summary>
  206.         /// <param name="directory"></param>
  207.         /// <returns></returns>
  208.         public string[] directoryListSimple(string directory) {
  209.             try {
  210.                 ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + directory);
  211.                 ftpRequest.Credentials = new NetworkCredential(user, pass);
  212.                 ftpRequest.UseBinary = true;
  213.                 ftpRequest.UsePassive = true;
  214.                 ftpRequest.KeepAlive = true;
  215.                 ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
  216.                 ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
  217.                 ftpStream = ftpResponse.GetResponseStream();
  218.                 StreamReader ftpReader = new StreamReader(ftpStream);
  219.                 string directoryRaw = null;
  220.                 try { while (ftpReader.Peek() != -1) { directoryRaw += ftpReader.ReadLine() + "|"; } } catch (Exception ex) { Console.WriteLine(ex.ToString()); }
  221.                 ftpReader.Close();
  222.                 ftpStream.Close();
  223.                 ftpResponse.Close();
  224.                 ftpRequest = null;
  225.                 try { string[] directoryList = directoryRaw.Split("|".ToCharArray()); return directoryList; } catch (Exception ex) { Console.WriteLine(ex.ToString()); }
  226.             } catch (Exception ex) { Console.WriteLine(ex.ToString()); }
  227.             return new string[] { "" };
  228.         }
  229.  
  230.         /// <summary>
  231.         /// Fonction de récupération d'une liste de fichier sur le FTP (avec tous les détails)
  232.         /// </summary>
  233.         /// <param name="directory"></param>
  234.         /// <returns></returns>
  235.         public string[] directoryListDetailed(string directory) {
  236.             try {
  237.                 ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + directory);
  238.                 ftpRequest.Credentials = new NetworkCredential(user, pass);
  239.                 ftpRequest.UseBinary = true;
  240.                 ftpRequest.UsePassive = true;
  241.                 ftpRequest.KeepAlive = true;
  242.                 ftpRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
  243.                 ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
  244.                 ftpStream = ftpResponse.GetResponseStream();
  245.                 StreamReader ftpReader = new StreamReader(ftpStream);
  246.                 string directoryRaw = null;
  247.                 try { while (ftpReader.Peek() != -1) { directoryRaw += ftpReader.ReadLine() + "|"; } } catch (Exception ex) { Console.WriteLine(ex.ToString()); }
  248.                 ftpReader.Close();
  249.                 ftpStream.Close();
  250.                 ftpResponse.Close();
  251.                 ftpRequest = null;
  252.                 try { string[] directoryList = directoryRaw.Split("|".ToCharArray()); return directoryList; } catch (Exception ex) { Console.WriteLine(ex.ToString()); }
  253.             } catch (Exception ex) { Console.WriteLine(ex.ToString()); }
  254.             return new string[] { "" };
  255.         }
  256.     }
  257. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement