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