FTP-клиент
Загрузка и скачивание файлов, управление удалёнными папками.
Введение
В свой low-code-фреймворк Netuno интегрировал FTP-клиент, который позволяет подключаться к серверам, отправлять и получать файлы, изменять папки и выполнять другие удалённые операции.
Поддерживает несколько одновременных подключений, а также FTPS.
Это возможно благодаря реализации на Java с открытым исходным кодом Apache Commons Net, которая
позволяет Netuno предоставлять эти возможности на всех языках скриптов через ресурс _ftp.
Подробнее о ресурсе FTP в Netuno.
Настройка
Первым шагом будет настройка данных доступа к FTP, которые Netuno будет использовать для подключения.
Перейдите в приложении, которое разрабатываете, к файлу конфигурации окружения. В этом примере мы будем использовать файл окружения разработки, расположенный по пути:
config/_development.json
Проверьте, нет ли уже настроек FTP; если их ещё нет, то в конце файла конфигурации (в формате JSON) добавьте параметры настройки FTP:
{
...
"ftp": {
"default": {
"enabled": true,
"host": "мой.сервер.net",
"port": 21,
"username": "temp",
"password": "$eCr37"
}
},
...
}
После сохранения изменений достаточно перезапустить Netuno, чтобы применить изменения конфигурации. Это
настройки подключения по умолчанию, как указывает имя default.
Можно добавить больше конфигураций подключения FTP, но только одна может быть определена как конфигурация по умолчанию.
Чтобы добавить больше конфигураций подключения FTP, достаточно повторить блок конфигурации по умолчанию и заменить имя
default на другое имя по вашему выбору, см. пример:
{
...
"ftp": {
"default": {
"enabled": true,
"host": "мой.сервер.net",
"port": 22,
"username": "temp",
"password": "$eCr37"
},
"другой": {
"enabled": true,
"host": "мой.другой-сервер.net",
"port": 22,
"username": "temp",
"password": "$eCr37"
}
},
...
}
Конфигурация, аналогичная примеру выше, позволит использовать учётную запись по умолчанию, когда она вызывается следующим образом в коде:
- 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()
А чтобы использовать конфигурацию другой, достаточно добавить имя конфигурации как параметр в функцию
_ftp.init() следующим образом:
- 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("другой")
Если не добавить имя конфигурации как параметр, всегда будет использоваться учётная запись по умолчанию.
Подключение
Прежде чем что-либо делать, нужно установить FTP-подключение:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
ftp.connect()
ftp.connect()
ftp.connect()
ftp.connect()
ftp.connect()
ftp.connect()
Рабочая папка
При выполнении операций по FTP нужно определить, какая папка будет использоваться.
Задав рабочую папку, мы сможем выполнять различные манипуляции относительно этой базовой папки.
Чтобы изменить рабочую папку:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
ftp.changeWorkingDirectory("моя/папка/база")
ftp.changeWorkingDirectory("моя/папка/база")
ftp.changeWorkingDirectory("моя/папка/база")
ftp.changeWorkingDirectory("моя/папка/база")
ftp.changeWorkingDirectory("моя/папка/база")
ftp.changeWorkingDirectory("моя/папка/база")
Теперь любая операция будет выполняться в этой папке или относительно неё.
Создание и удаление папок
Чтобы создать папку, достаточно указать путь к ней:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
ftp.createDirectory("временная-папка")
ftp.createDirectory("временная-папка/под-папка")
ftp.createDirectory("временная-папка")
ftp.createDirectory("временная-папка/под-папка")
ftp.createDirectory("временная-папка")
ftp.createDirectory("временная-папка/под-папка")
ftp.createDirectory("временная-папка")
ftp.createDirectory("временная-папка/под-папка")
ftp.createDirectory("временная-папка")
ftp.createDirectory("временная-папка/под-папка")
ftp.createDirectory("временная-папка")
ftp.createDirectory("временная-папка/под-папка")
Чтобы удалить папки:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
ftp.deleteDirectory("временная-папка/под-папка")
ftp.deleteDirectory("временная-папка")
ftp.deleteDirectory("временная-папка/под-папка")
ftp.deleteDirectory("временная-папка")
ftp.deleteDirectory("временная-папка/под-папка")
ftp.deleteDirectory("временная-папка")
ftp.deleteDirectory("временная-папка/под-папка")
ftp.deleteDirectory("временная-папка")
ftp.deleteDirectory("временная-папка/под-папка")
ftp.deleteDirectory("временная-папка")
ftp.deleteDirectory("временная-папка/под-папка")
ftp.deleteDirectory("временная-папка")
Переименование
Можно переименовывать файлы или папки: передаётся старый путь, а затем новый путь:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
ftp.rename("старое-имя", "новое-имя")
ftp.rename("старое-имя", "новое-имя")
ftp.rename("старое-имя", "новое-имя")
ftp.rename("старое-имя", "новое-имя")
ftp.rename("старое-имя", "новое-имя")
ftp.rename("старое-имя", "новое-имя")
Отправка файлов
Чтобы отправить текстовый файл:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
ftp.uploadText("мой-файл.txt", "Привет, FTP! Это моё содержимое...")
ftp.uploadText("мой-файл.txt", "Привет, FTP! Это моё содержимое...")
ftp.uploadText("мой-файл.txt", "Привет, FTP! Это моё содержимое...")
ftp.uploadText("мой-файл.txt", "Привет, FTP! Это моё содержимое...")
ftp.uploadText("мой-файл.txt", "Привет, FTP! Это моё содержимое...")
ftp.uploadText("мой-файл.txt", "Привет, FTP! Это моё содержимое...")
Получение файлов
Чтобы получить текстовый файл:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
const содержимоеФайла = ftp.downloadText("мой-файл.txt")
_out.println(содержимоеФайла)
const содержимоеФайла = ftp.downloadText("мой-файл.txt")
_out.println(содержимоеФайла)
содержимоеФайла = ftp.downloadText("мой-файл.txt")
_out.println(содержимоеФайла)
содержимоеФайла = ftp.downloadText("мой-файл.txt")
_out.println(содержимоеФайла)
val содержимоеФайла = ftp.downloadText("мой-файл.txt")
_out.println(содержимоеФайла)
def содержимоеФайла = ftp.downloadText("мой-файл.txt")
_out.println(содержимоеФайла)
Список элементов в папке
Выводит всё содержимое папки:
- JavaScript
- TypeScript
- Python
- Ruby
- Kotlin
- Groovy
for (const i of ftp.list("путь/папка")) {
if (i.isDirectory()) {
_out.print("Папка: ")
} else if (i.isFile()) {
_out.print("Файл: ")
} else {
_out.print("Другое: ")
}
_out.println(i.getName())
_out.println("<br/>")
}
for (const i of ftp.list("путь/папка")) {
if (i.isDirectory()) {
_out.print("Папка: ")
} else if (i.isFile()) {
_out.print("Файл: ")
} else {
_out.print("Другое: ")
}
_out.println(i.getName())
_out.println("<br/>")
}
for i in ftp.list("путь/папка"):
if i.isDirectory():
_out.print("Папка: ")
elif i.isFile():
_out.print("Файл: ")
else:
_out.print("Другое: ")
_out.println(i.getName())
_out.println("<br/>")
ftp.list("путь/папка").each do |i|
if i.isDirectory()
_out.print("Папка: ")
elsif i.isFile()
_out.print("Файл: ")
else
_out.print("Другое: ")
end
_out.println(i.getName())
_out.println("<br/>")
end
ftp.list("путь/папка").forEach {
if (it.isDirectory()) {
_out.print("Папка: ")
} else if (it.isFile()) {
_out.print("Файл: ")
} else {
_out.print("Другое: ")
}
_out.println(it.getName())
_out.println("<br/>")
}
for (i in ftp.list("путь/папка")) {
if (i.isDirectory()) {
_out.print("Папка: ")
} else if (i.isFile()) {
_out.print("Файл: ")
} else {
_out.print("Другое: ")
}
_out.println(i.getName())
_out.println("<br/>")
}
Возвращает список объектов типа FTPFile.