Klient FTP
Wysyłanie i pobieranie plików, zarządzanie folderami zdalnymi.
Wprowadzenie
Netuno ma zintegrowanego w swoim frameworku low-code klienta FTP, który pozwala łączyć się z serwerami, wysyłać i odbierać pliki, modyfikować foldery oraz wykonywać inne operacje zdalne.
Obsługuje wiele równoczesnych połączeń, a także FTPS.
To dzięki implementacji w Javie i open-source Apache Commons Net, która
pozwala Netuno udostępnić te funkcjonalności we wszystkich językach skryptowych poprzez zasób _ftp.
Więcej o zasobie FTP w Netuno.
Konfiguracja
Pierwszym krokiem będzie skonfigurowanie danych dostępowych do FTP, których Netuno użyje do nawiązania połączenia.
Przejdź w aplikacji, którą rozwijasz, do pliku konfiguracji środowiska. W tym przykładzie użyjemy pliku środowiska deweloperskiego znajdującego się w:
config/_development.json
Sprawdź, czy nie zawiera już konfiguracji FTP. Jeśli jeszcze jej nie ma, na końcu pliku konfiguracyjnego (w formacie JSON) dodaj parametry konfiguracji FTP:
{
...
"ftp": {
"default": {
"enabled": true,
"host": "moj.serwer.net",
"port": 21,
"username": "temp",
"password": "$eCr37"
}
},
...
}
Po zapisaniu zmian wystarczy ponownie uruchomić Netuno, aby przyjęło zmiany konfiguracji. Będzie to
konfiguracja domyślna połączenia, jak wskazuje nazwa default.
Można dodać więcej konfiguracji połączenia FTP, ale tylko jedna może być ustawiona jako domyślna.
Aby dodać więcej konfiguracji połączenia FTP, wystarczy powtórzyć blok konfiguracji domyślnej i zmienić nazwę
default na inną wybraną przez siebie nazwę, zobacz przykład:
{
...
"ftp": {
"default": {
"enabled": true,
"host": "moj.serwer.net",
"port": 22,
"username": "temp",
"password": "$eCr37"
},
"inny": {
"enabled": true,
"host": "moj.inny-serwer.net",
"port": 22,
"username": "temp",
"password": "$eCr37"
}
},
...
}
Konfiguracja podobna do powyższego przykładu pozwoli korzystać z konta domyślnego, gdy zostanie wywołana w kodzie w następujący sposób:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const ftp = _ftp.init()
const ftp = _ftp.init()
ftp = _ftp.init()
ftp = _ftp.init()
val ftp = _ftp.init()
def ftp = _ftp.init()
Aby użyć konfiguracji inny, wystarczy dodać nazwę konfiguracji jako parametr funkcji
_ftp.init() w następujący sposób:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const ftpInny = _ftp.init("inny")
const ftpInny = _ftp.init("inny")
ftpInny = _ftp.init("inny")
ftpInny = _ftp.init("inny")
val ftpInny = _ftp.init("inny")
def ftpInny = _ftp.init("inny")
Jeśli nie dodasz nazwy konfiguracji jako parametru, zawsze będzie używane konto domyślne.
Połączenie
Przed zrobieniem czegokolwiek trzeba zainicjować połączenie FTP:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
ftp.connect()
ftp.connect()
ftp.connect()
ftp.connect()
ftp.connect()
ftp.connect()
Folder roboczy
Podczas wykonywania operacji na FTP trzeba zdefiniować, który folder będzie używany.
Poprzez zdefiniowanie folderu roboczego będziemy mogli wykonywać różne manipulacje począwszy od tego folderu bazowego.
Aby zmienić folder roboczy:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
ftp.changeWorkingDirectory("moja/pasta/bazowa")
ftp.changeWorkingDirectory("moja/pasta/bazowa")
ftp.changeWorkingDirectory("moja/pasta/bazowa")
ftp.changeWorkingDirectory("moja/pasta/bazowa")
ftp.changeWorkingDirectory("moja/pasta/bazowa")
ftp.changeWorkingDirectory("moja/pasta/bazowa")
Teraz każda operacja będzie wykonywana w tym folderze lub począwszy od niego.
Tworzenie i usuwanie folderów
Aby utworzyć folder, wystarczy wskazać ścieżkę tego folderu:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
ftp.createDirectory("folder-tymczasowy")
ftp.createDirectory("folder-tymczasowy/podfolder")
ftp.createDirectory("folder-tymczasowy")
ftp.createDirectory("folder-tymczasowy/podfolder")
ftp.createDirectory("folder-tymczasowy")
ftp.createDirectory("folder-tymczasowy/podfolder")
ftp.createDirectory("folder-tymczasowy")
ftp.createDirectory("folder-tymczasowy/podfolder")
ftp.createDirectory("folder-tymczasowy")
ftp.createDirectory("folder-tymczasowy/podfolder")
ftp.createDirectory("folder-tymczasowy")
ftp.createDirectory("folder-tymczasowy/podfolder")
Aby usunąć lub skasować foldery:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
ftp.deleteDirectory("folder-tymczasowy/podfolder")
ftp.deleteDirectory("folder-tymczasowy")
ftp.deleteDirectory("folder-tymczasowy/podfolder")
ftp.deleteDirectory("folder-tymczasowy")
ftp.deleteDirectory("folder-tymczasowy/podfolder")
ftp.deleteDirectory("folder-tymczasowy")
ftp.deleteDirectory("folder-tymczasowy/podfolder")
ftp.deleteDirectory("folder-tymczasowy")
ftp.deleteDirectory("folder-tymczasowy/podfolder")
ftp.deleteDirectory("folder-tymczasowy")
ftp.deleteDirectory("folder-tymczasowy/podfolder")
ftp.deleteDirectory("folder-tymczasowy")
Zmiana nazwy
Można zmieniać nazwy plików lub folderów, podając starą ścieżkę, a następnie nową ścieżkę:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
ftp.rename("stara-nazwa", "nowa-nazwa")
ftp.rename("stara-nazwa", "nowa-nazwa")
ftp.rename("stara-nazwa", "nowa-nazwa")
ftp.rename("stara-nazwa", "nowa-nazwa")
ftp.rename("stara-nazwa", "nowa-nazwa")
ftp.rename("stara-nazwa", "nowa-nazwa")
Wysyłanie plików
Aby przesłać plik tekstowy:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
ftp.uploadText("moj-plik.txt", "Witaj FTP! To moja treść...")
ftp.uploadText("moj-plik.txt", "Witaj FTP! To moja treść...")
ftp.uploadText("moj-plik.txt", "Witaj FTP! To moja treść...")
ftp.uploadText("moj-plik.txt", "Witaj FTP! To moja treść...")
ftp.uploadText("moj-plik.txt", "Witaj FTP! To moja treść...")
ftp.uploadText("moj-plik.txt", "Witaj FTP! To moja treść...")
Odbieranie plików
Aby pobrać plik tekstowy:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const zawartoscPliku = ftp.downloadText("moj-plik.txt")
_out.println(zawartoscPliku)
const zawartoscPliku = ftp.downloadText("moj-plik.txt")
_out.println(zawartoscPliku)
zawartoscPliku = ftp.downloadText("moj-plik.txt")
_out.println(zawartoscPliku)
zawartoscPliku = ftp.downloadText("moj-plik.txt")
_out.println(zawartoscPliku)
val zawartoscPliku = ftp.downloadText("moj-plik.txt")
_out.println(zawartoscPliku)
def zawartoscPliku = ftp.downloadText("moj-plik.txt")
_out.println(zawartoscPliku)
Listowanie elementów w folderze
Wyświetla całą zawartość folderu:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
for (const i of ftp.list("sciezka/folder")) {
if (i.isDirectory()) {
_out.print("Folder: ")
} else if (i.isFile()) {
_out.print("Plik: ")
} else {
_out.print("Inny: ")
}
_out.println(i.getName())
_out.println("<br/>")
}
for (const i of ftp.list("sciezka/folder")) {
if (i.isDirectory()) {
_out.print("Folder: ")
} else if (i.isFile()) {
_out.print("Plik: ")
} else {
_out.print("Inny: ")
}
_out.println(i.getName())
_out.println("<br/>")
}
for i in ftp.list("sciezka/folder"):
if i.isDirectory():
_out.print("Folder: ")
elif i.isFile():
_out.print("Plik: ")
else:
_out.print("Inny: ")
_out.println(i.getName())
_out.println("<br/>")
ftp.list("sciezka/folder").each do |i|
if i.isDirectory()
_out.print("Folder: ")
elsif i.isFile()
_out.print("Plik: ")
else
_out.print("Inny: ")
end
_out.println(i.getName())
_out.println("<br/>")
end
ftp.list("sciezka/folder").forEach {
if (it.isDirectory()) {
_out.print("Folder: ")
} else if (it.isFile()) {
_out.print("Plik: ")
} else {
_out.print("Inny: ")
}
_out.println(it.getName())
_out.println("<br/>")
}
for (i in ftp.list("sciezka/folder")) {
if (i.isDirectory()) {
_out.print("Folder: ")
} else if (i.isFile()) {
_out.print("Plik: ")
} else {
_out.print("Inny: ")
}
_out.println(i.getName())
_out.println("<br/>")
}
Zwraca listę obiektów typu FTPFile.