Przejdź do treści

Plugin FtpDriver

Plugin FtpDriver służy do w Neosie połączeń z serwerami FTP. Oparty jest na bibliotece FluentFtp, przez co prosto można go rozszerzać o bardziej zaawansowane funkcjonalności.

Funkcjonalność pluginu

Obecnie plugin FtpDriver obsługuje następujące funkcjonalności:

  • Wysyłanie plików na wskazane miejsce na serwerze FTP
  • Pobieranie plików ze wskazanego miejsca na serwerze FTP
  • Zmiana nazw/ścieżek plików na serwerach FTP
  • Kasowanie plików z serwerów FTP
  • Tworzenie folderów na serwerze FTP
  • Możliwość zobaczenia następujących informacji o plikach znajdujących się na serwerze:
    • Rozmiar pliku
    • Czas utworzenia pliku (tylko dla określonych konfiguracji serwerów)
    • Czas ostatniej modyfikacji pliku
  • Pobieranie listy plików, wraz z informacjami o nich, z całego serwera lub wskazanego folderu

Jak używać pluginu

Na początek, zanim zaczniemy korzystać z funkcjonalności pluginu, musimy w naszej metodzie neosowej stworzyć obiekt klienta FTP, z którego będziemy potem korzystać. Taki obiekt tworzymy w następujący sposób:

    FTPDriver.Ftp ftp = new FTPDriver.Ftp("adres serwera","login","hasło","port", FTPDriverEncyptionMode mode);

Z czego parametr port jest opcjonalny, domyślnie jest on ustawiony, standardowo dla serwerów FTP, na 21. Parametr mode też jest opcjonalny i domyślnie jest FTPDriverEncyptionMode.Auto.

Przykłady użycia

Należy pamiętać, że ścieżki do plików na serwerze, które podajemy, to ścieżki relatywne. Oczywiście nie musimy też każdorazowo tworzyć obiektu Ftp, możemy cały czas korzystać z jednego, jeśli w jednej metodzie neosowej wykorzysujemy wiele funkcji pluginu.

Wysyłanie pliku

FTPDriver.Ftp ftp = new FTPDriver.Ftp(adres_serwera,login,hasło,port);
var serverPath = "upload/" + Path.GetFileName(local); //ścieżka, gdzie na serwerze chcemy wrzucić nasz plik
ftp.Upload(serverPath,local); //metoda wysyłająca plik ze ścieżki "local" do wskazanego miejsca na serwerze

Wysłanie całego folderu

FTPDriver.Ftp ftp = new FTPDriver.Ftp(adres_serwera,login,hasło,port);
var serverPath = "upload/" + Path.GetFileName(local); //ścieżka, gdzie na serwerze chcemy wrzucić zawartość naszego folderu
ftp.UploadDirectory(serverPath,local); //metoda wysyłająca zawartość folderu ze ścieżki "local" do wskazanego miejsca na serwerze

Pobieranie pliku

FTPDriver.Ftp ftp = new FTPDriver.Ftp(adres_serwera,login,hasło,port);
var serverPath = "download/test.txt; //ścieżka, skąd chcemy pobrać plik
ftp.Download(serverPath,local); //metoda pobierająca plik do ścieżki "local" do wskazanego miejsca na serwerze

Zmiana nazwy/ścieżki pliku

FTPDriver.Ftp ftp = new FTPDriver.Ftp(adres_serwera,login,hasło,port);
ftp.RenameFile("download/test.txt","download/testNew.txt");

Tworzenie folderu

FTPDriver.Ftp ftp = new FTPDriver.Ftp(adres_serwera,login,hasło,port);
ftp.CreateDirectory("test");

Pobieranie danych o pliku

FTPDriver.Ftp ftp = new FTPDriver.Ftp(adres_serwera,login,hasło,port);
var fileSize = ftp.GetFileSize("download/test.txt");
var creationTime = ftp.GetFileCreationDateTime("download/test.txt");
var lastModificationTime = ftp.GetFileModificationDateTime("download/testNew.txt");

Pobieranie listy plików

FTPDriver.Ftp ftp = new FTPDriver.Ftp(adres_serwera,login,hasło,port);
var simple = ftp.EnumerateFilesSimple();
var detailed = ftp.EnumerateFilesDetailed();

Lista simple zawiera jedynie podstawową informację o plikach z serwera, a więc jedynie ich nazwy. Za to lista detailed zawiera dokładniejsze informacje, a więc nazwę, ścieżkę, rozmiar oraz datę utworzenia pliku na serwerze.

Używając metod EnumerateFiles bez parametrów dostajemy listę plików na całym serwerze, gdy chcemy pobrać listę jedynie z konkretnego folderów, bądź także jego podfolderów musimy użyć tych metod z parametrami.

FTPDriver.Ftp ftp = new FTPDriver.Ftp(adres_serwera,login,hasło,port);
var simple = ftp.EnumerateFilesSimple(directory, checkSubdirectories);
var detailed = ftp.EnumerateFilesDetailed(directory, checkSubdirectories);

Gdzie parametr directory to folder, który/od którego chcemy przeszukiwać, a checkSubdirectries ustawiamy odpowiednio na true/false, w zależności czy chcemy wylistować także pliki z podfolderów (domyślnie ta flaga jest ustalona na true)

Połączenie do FTPS

Jeśli chcemy się łączyć do FTPS za pomocą TLS należy utworzyć następująco obiekt:

FTPDriver.Ftp ftp= new FTPDriver.Ftp("host", "user", "pass", 21, FTPDriverEncyptionMode.Explicit); 

Jeśli chcemy się łączyć do FTPS za pomocą SSL należy utworzyć następująco obiekt:

FTPDriver.Ftp ftp= new FTPDriver.Ftp("host", "user", "pass", 990, FTPDriverEncyptionMode.Implicit); 

Połączenie do SFTP

Jeśli chcemy się łączyć do SFTP za pomocą SSH należy utworzyć następująco obiekt:

FTPDriver.Ftp ftp= new FTPDriver.Ftp("host", "user", "pass", 990, FTPDriverEncyptionMode.Ssh); 

Uwaga!

Przy połaczeniu przy pomocy SFTP (SSH) metoda GetFileCreationDateTime nie będzie działać. Przy jej wywołaniu dostaniemy NotSupportedException.

Instalacja

Opis instalacji pluginu jest opisany w repozytorium git projektu pluginu, w pliku readme. Tutaj