Управление файлами на FTP с помощью JS
С помощью кода, сгенерированного в узле JavaScript, возможно управление файлами на FTP-сервере. Для указанной директории на назначенном FTP-сервере доступны следующие действия:
- Получение списка файлов.
- Получение файла, включая его содержимое.
- Загрузка файла.
- Удаление файла.
Получение файла
Чтобы получить файл с помощью узла JavaScript, выполните следующие шаги:
- Добавьте узел JavaScript в сценарий со следующим кодом:
import FTP from 'promise-ftp';
export default async function run({ execution_id, input, data, store }) {
const ftp = new FTP();
try {
await ftp.connect({
host: 'You_host', // Замените на хост вашего FTP-сервера
user: 'You_login', // Замените на ваш логин FTP
password: 'You_password' // Замените на ваш пароль FTP
});
// Определение пути к файлу.
// Параметр может быть получен из выходных параметров предыдущих узлов
const remoteFilePath = "/htdocs/index2.html";
const stream = await ftp.get(remoteFilePath);
// Чтение потока и преобразование в строку
let fileContent = '';
for await (const chunk of stream) {
fileContent += chunk.toString();
}
// Отключение от FTP-сервера
await ftp.end();
// Извлечение имени файла и расширения
const filename = remoteFilePath.replace(/^.*[\\\/]/, ''); // Удаление пути директории
const extension = filename.split('.').pop();
return {
content: fileContent,
extension: extension,
filename: filename
};
} catch (error) {
// При ошибке отключаемся и выбрасываем ошибку
await ftp.end();
throw error; // Ошибка будет обработана платформой
}
}Этот код содержит функцию для подключения к FTP-серверу с указанными учётными данными, получения содержимого файла по заданному пути remoteFilePath, чтения файла, извлечения его имени filename и расширения extension, и возврата этих данных. В случае ошибки код отключается от FTP-сервера и передаёт ошибку для обработки платформой.
-
Запустите узел JavaScript один раз и дождитесь его выполнения;
-
Изучите выходные данные узла JavaScript для атрибутов файла, включая его содержимое:

Получение списка файлов
Чтобы получить список файлов с помощью узла JavaScript, выполните следующие шаги:
- Добавьте узел JavaScript в сценарий со следующим кодом:
import FTP from 'promise-ftp';
export default async function run({execution_id, input, data, store}) {
const ftp = new FTP();
try {
await ftp.connect({
host: 'You_host', // Замените на хост вашего FTP-сервера
user: 'You_login', // Замените на ваш логин FTP
password: 'You_password' // Замените на ваш пароль FTP
});
// Переход в директорию, из которой нужно получить список файлов
await ftp.cwd('/htdocs');
// Получение списка файлов
let fileList = await ftp.list();
// Фильтрация скрытых файлов и папок
fileList = fileList.filter(file => !file.name.startsWith('.'));
// Отключение от FTP-сервера
await ftp.end();
// Возврат списка файлов
return {
fileList
};
} catch (error) {
// При ошибке отключаемся и выбрасываем ошибку
await ftp.end();
throw error;
}
}Этот код подключается к FTP-серверу, переходит в рабочую директорию /htdocs (при необходимости), получает список файлов, исключает скрытые файлы и папки, а затем возвращает этот список fileList. В случае ошибки код отключается от FTP-сервера и передаёт ошибку для обработки платформой.
-
Запустите узел JavaScript один раз и дождитесь его выполнения;
-
Изучите выходные данные узла JavaScript — массив файлов, включая параметры каждого файла:
{
"type": "-",
"name": "index2.html",
"sticky": false,
"rights": {
"user": "rw",
"group": "r",
"other": "r"
},
"acl": false,
"owner": "0",
"group": "2",
"size": 2064,
"date": "2024-01-22T03:38:00.000Z"
}
Загрузка файла
Чтобы загрузить файл на FTP-сервер с помощью узла JavaScript, выполните следующие шаги:
- Добавьте узел JavaScript в сценарий со следующим кодом:
import FTP from 'promise-ftp';
export default async function uploadFile({ execution_id, input, data, store }) {
const ftp = new FTP();
try {
await ftp.connect({
host: 'You_host', // Замените на хост вашего FTP-сервера
user: 'You_login', // Замените на ваш логин FTP
password: 'You_password' // Замените на ваш пароль FTP
});
// Пример: HTML-содержимое для загрузки
const htmlContent = "<html>...</html>"; // Замените на ваше реальное HTML-содержимое
// Преобразование HTML-содержимого в буфер
const buffer = Buffer.from(htmlContent, 'utf-8');
// Определение пути к файлу.
// Параметр может быть получен из выходных параметров предыдущих узлов
const remoteFilePath = '/htdocs/index3.html';
// Загрузка буфера на FTP-сервер
await ftp.put(buffer, remoteFilePath);
// Отключение от FTP-сервера
await ftp.end();
return {
message: `Файл успешно загружен как ${remoteFilePath}`
};
} catch (error) {
// При ошибке отключаемся и выбрасываем ошибку
await ftp.end();
throw error; // Ошибка будет обработана платформой
}
}Этот код предназначен для подключения к FTP-серверу, загрузки файла с HTML-содержимым htmlContent и возврата сообщения об успешной загрузке message. Файл создаётся из HTML-содержимого и загружается на сервер по указанному пути remoteFilePath. В случае ошибки при подключении или загрузке соединение с сервером закрывается, и ошибка передаётся для обработки платформой.
-
Запустите узел JavaScript один раз и дождитесь его выполнения;
-
Изучите выходные данные узла JavaScript для сообщения об успешной загрузке с расположением файла:

Удаление файла
Чтобы удалить файл с FTP-сервера с помощью узла JavaScript, выполните следующие шаги:
- Добавьте узел JavaScript в сценарий со следующим кодом:
import FTP from 'promise-ftp';
export default async function deleteFile({ execution_id, input, data, store }) {
const ftp = new FTP();
try {
await ftp.connect({
host: 'You_host', // Замените на хост вашего FTP-сервера
user: 'You_login', // Замените на ваш логин FTP
password: 'You_password' // Замените на ваш пароль FTP
});
// Определение пути к файлу.
// Параметр может быть получен из выходных параметров предыдущих узлов
const remoteFilePath = '/htdocs/index3.html';
// Удаление файла с FTP-сервера
await ftp.delete(remoteFilePath);
// Отключение от FTP-сервера
await ftp.end();
return {
message: `Файл ${remoteFilePath} успешно удалён`
};
} catch (error) {
// При ошибке отключаемся и выбрасываем ошибку
await ftp.end();
throw error; // Ошибка будет обработана платформой
}
}Этот код предназначен для подключения к FTP-серверу и удаления файла, расположенного по пути, указанному в переменной remoteFilePath. После успешного подключения код удаляет файл с сервера. Если файл успешно удалён, функция возвращает message, сообщающее, что файл был удалён. В случае ошибки при подключении или удалении файла соединение с сервером закрывается, и ошибка передаётся для обработки платформой.
-
Запустите узел JavaScript один раз и дождитесь его выполнения;
-
Изучите выходные данные узла JavaScript для сообщения об успешном удалении файла:
