Nodul LogoNodul
Инструменты кода

Управление файлами на FTP с помощью JS

С помощью кода, сгенерированного в узле JavaScript, возможно управление файлами на FTP-сервере. Для указанной директории на назначенном FTP-сервере доступны следующие действия:

  • Получение списка файлов.
  • Получение файла, включая его содержимое.
  • Загрузка файла.
  • Удаление файла.

Получение файла

Чтобы получить файл с помощью узла JavaScript, выполните следующие шаги:

  1. Добавьте узел 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-сервера и передаёт ошибку для обработки платформой.

  1. Запустите узел JavaScript один раз и дождитесь его выполнения;

  2. Изучите выходные данные узла JavaScript для атрибутов файла, включая его содержимое:

Результат получения файла

Получение списка файлов

Чтобы получить список файлов с помощью узла JavaScript, выполните следующие шаги:

  1. Добавьте узел 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-сервера и передаёт ошибку для обработки платформой.

  1. Запустите узел JavaScript один раз и дождитесь его выполнения;

  2. Изучите выходные данные узла 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, выполните следующие шаги:

  1. Добавьте узел 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. В случае ошибки при подключении или загрузке соединение с сервером закрывается, и ошибка передаётся для обработки платформой.

  1. Запустите узел JavaScript один раз и дождитесь его выполнения;

  2. Изучите выходные данные узла JavaScript для сообщения об успешной загрузке с расположением файла:

Успешная загрузка

Удаление файла

Чтобы удалить файл с FTP-сервера с помощью узла JavaScript, выполните следующие шаги:

  1. Добавьте узел 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, сообщающее, что файл был удалён. В случае ошибки при подключении или удалении файла соединение с сервером закрывается, и ошибка передаётся для обработки платформой.

  1. Запустите узел JavaScript один раз и дождитесь его выполнения;

  2. Изучите выходные данные узла JavaScript для сообщения об успешном удалении файла:

Успешное удаление