Загрузка файла в n8n: полное руководство
n8n — это инструмент автоматизации рабочих процессов с открытым исходным кодом, который использует подход, основанный на узлах (нодах). Загрузка файлов является фундаментальной операцией во множестве сценариев: от обработки входящих данных до интеграции с облачными хранилищами и системами. В контексте n8n «загрузка файла» может означать два основных действия: загрузку файла из внешнего источника в рабочий процесс n8n для последующей обработки и выгрузку (загрузку) файла из n8n во внешнюю систему или хранилище. Данная статья детально рассматривает оба направления, методы, узлы и лучшие практики.
Основные принципы работы с файлами в n8n
n8n обрабатывает файлы как двоичные данные (Binary Data). Каждый узел, который может работать с файлами, обычно имеет два режима вывода данных: «Двоичный» и «JSON». Двоичные данные в n8n представлены в виде объекта, содержащего не только сами данные, но и метаинформацию: имя файла (fileName), тип MIME (mimeType) и размер (fileSize). Для эффективной передачи файла между узлами используется специальное свойство binary в элементе данных.
Пример структуры элемента с двоичными данными:
{
"json": { ... }, // Любые связанные JSON-данные
"binary": {
"file_identifier": { // Ключ, например, "data"
"data": "BASE64_ENCODED_STRING", // Данные файла в кодировке Base64
"mimeType": "image/png",
"fileName": "report.png",
"fileSize": 12456
}
}
}
Узлы для загрузки файлов в n8n (импорт)
Для получения файлов из внешних источников в n8n используется ряд специализированных узлов.
1. Узел HTTP Request
Это наиболее универсальный узел для загрузки файлов из интернета или внутренних API. Ключевые настройки:
- Метод: GET.
- URL: Прямая ссылка на файл.
- Ответить с помощью: «Двоичный файл».
- Ключ свойства двоичных данных: Имя, под которым файл будет сохранен в элементе (по умолчанию «data»).
- Google Drive: Узлы «Google Drive Trigger» и «Google Drive» (операция «Download»).
- Dropbox: Узел «Dropbox» (операции «Download» или «Get Link»).
- Nextcloud / OwnCloud: Узел «Nextcloud» (операция «Download»).
- AWS S3: Узел «AWS S3» (операция «Get»).
- SFTP: Узел «SFTP» (операции «Download» или «List»).
- Google Drive: Операция «Upload».
- Dropbox: Операция «Upload».
- AWS S3: Операция «Upload (Multipart)».
- SFTP: Операция «Upload».
- Метод: POST или PUT.
- Отправить данные как: «Form-Data Multipart» или «Binary».
- Параметры: В режиме multipart нужно указать имя поля (например, «file») и источник — «Двоичные данные».
- Read Binary File: Преобразует двоичные данные (Base64) в удобный для обработки текстовый формат (например, UTF-8).
- Convert to File: Выполняет обратную операцию — преобразует текстовые или JSON-данные обратно в двоичный формат с указанием имени файла и MIME-типа.
- Множество специализированных узлов: Например, «Extract from Archive» для распаковки ZIP, «PDF» для генерации PDF-документов, «Resize Image» для изменения изображений.
- Узел «HTTP Request»: Загружает CSV-файл с публичного URL. Настройка: Метод GET, Ответить с помощью «Двоичный файл».
- Узел «Read Binary File»: Конвертирует двоичные данные CSV в текст. Настройка: Кодировка «utf8», Двоичное свойство «data».
- Узел «CSV»: Парсит текстовые данные CSV в JSON-формат n8n. Настройка: Указание разделителя, заголовков.
- Узел «Set»: Добавляет поле с датой обработки.
- Узел «Convert to File»: Преобразует отфильтрованные JSON-данные обратно в файл. Настройка: Имя файла «processed_data.json», MIME-тип «application/json», Данные из JSON-поля.
- Узел «Google Drive»: Загружает итоговый JSON-файл. Настройка: Операция «Upload», указание папки, источник данных — двоичные данные из предыдущего узла.
- Узел «Email (SMTP)»: Отправляет файл как вложение. Настройка: Указание получателя, темы, и добавление вложения из двоичных данных.
- Обработка больших файлов: Избегайте обработки очень больших файлов (сотни МБ) непосредственно в потоке данных n8n. Используйте облачные хранилища и прямые ссылки, либо разбивайте файлы на части. Установите соответствующие лимиты в настройках n8n (
binary_data_max_size). - Безопасность: Всегда проверяйте типы загружаемых файлов, если это критично. Используйте встроенную аутентификацию вебхуков. Храните учетные данные для облачных сервисов только через защищенную систему Credentials n8n.
- Именование файлов: Динамически формируйте имена файлов, используя выражения n8n (например,
{{$now.format('YYYY-MM-DD-HH-mm')}}_report.pdf), чтобы избежать конфликтов. - Очистка двоичных данных: Для длинных рабочих процессов, где двоичные данные больше не нужны после определенного этапа, используйте узел «Binary/Set» для удаления двоичного свойства, чтобы уменьшить нагрузку на память.
- Использование триггеров: Для автоматизации используйте триггерные узлы (Schedule, Webhook, Watch на облачных хранилищах) для запуска процессов при появлении новых файлов.
После успешного запроса файл будет доступен в последующих узлах как двоичные данные.
2. Узел Webhook
Позволяет получать файлы, отправленные на n8n из других систем. Например, можно создать входящий вебхук, который принимает POST-запросы с multipart/form-data. Полученный файл автоматически конвертируется в двоичный формат n8n.
3. Узлы облачных хранилищ
Эти узлы предназначены для прямой загрузки файлов из популярных сервисов:
Для работы большинства из них требуется предварительная настройка учетных данных (Credentials) в n8n.
4. Узел Email (IMAP)
Может извлекать вложения из электронных писем. Каждое вложение преобразуется в отдельный элемент с двоичными данными, которые затем можно обработать или сохранить.
Узлы для выгрузки файлов из n8n (экспорт)
После обработки файла часто требуется сохранить его в целевую систему.
1. Узлы облачных хранилищ (на запись)
Те же узлы, что и для загрузки, но с операциями на запись:
Эти узлы принимают на вход двоичные данные из предыдущего узла и загружают их в указанную папку или бакет.
2. Узел HTTP Request (POST/PUT)
Может использоваться для отправки файла на любой API, который принимает файлы. Необходимо настроить:
3. Узел Local File Trigger и Write Binary File
Для сохранения файлов непосредственно на сервер, где работает n8n. Важно: Этот метод зависит от файловой системы сервера и может создавать проблемы с масштабированием и безопасностью. Рекомендуется для прототипирования или случаев, когда n8n работает как персональный инструмент.
Обработка файлов внутри рабочего процесса
Между этапами загрузки и выгрузки файлы часто требуется преобразовать.
Ключевые узлы для обработки:
Практический пример рабочего процесса
Сценарий: Загрузка CSV-файла по HTTP, его преобразование в JSON, фильтрация данных и выгрузка результата в Google Drive и отправка по email.
Таблица: Сравнение методов загрузки/выгрузки файлов
| Метод/Узел | Назначение | Ключевые операции | Требует учетных данных |
|---|---|---|---|
| HTTP Request | Универсальная загрузка/отправка через API | GET (скачать), POST/PUT (отправить) | Иногда (для аутентифицированных запросов) |
| Webhook | Прием файлов от внешних систем | POST (прием) | Нет (но можно настроить аутентификацию) |
| Google Drive | Работа с файлами в Google Диске | Download, Upload, List, Delete | Да (OAuth 2.0) |
| AWS S3 | Работа с объектами в облачном хранилище Amazon | Get, Upload (Multipart), List, Delete | Да (Access Key / Secret Key) |
| SFTP | Передача файлов на/с SFTP-сервера | Download, Upload, List | Да (логин/пароль или ключ SSH) |
| Local File | Чтение/запись на локальный диск сервера n8n | Read, Write | Нет (зависит от прав файловой системы) |
Лучшие практики и рекомендации
Ответы на часто задаваемые вопросы (FAQ)
Как ограничить размер загружаемого файла в n8n?
Лимит контролируется переменной окружения N8N_BINARY_DATA_MAX_SIZE. По умолчанию он равен 250 МБ. Для его изменения необходимо задать эту переменную в среде выполнения n8n (например, в файле .env или настройках Docker).
Почему файл не загружается в узел HTTP Request?
Возможные причины: 1) URL требует аутентификации, а она не настроена; 2) Сервер отдает ошибку (проверьте журнал выполнения узла); 3) Ответ не является двоичным файлом (например, HTML-страница с ошибкой). Проверьте настройку «Ответить с помощью» — должно быть «Двоичный файл».
Как обработать несколько файлов одновременно?
n8n работает с массивами элементов. Если узел (например, Webhook или Read Binary Files) возвращает несколько файлов, каждый из них станет отдельным элементом в массиве. Последующие узлы будут выполняться для каждого элемента по отдельности. Для пакетной обработки можно использовать режим «Execute Once» в некоторых узлах или агрегировать данные.
Можно ли загружать файлы напрямую из интерфейса n8n?
Да, с помощью узла «Form Trigger». Он создает веб-форму, на которую пользователи могут перейти и загрузить файл. Загруженный файл попадает в рабочий процесс как двоичные данные. Это удобно для создания простых инструментов загрузки.
Как конвертировать данные (например, JSON) в файл Excel (XLSX) для выгрузки?
Для этого можно использовать узел «Spreadsheet File». Он принимает на вход JSON-данные (массив объектов) и конвертирует их в форматы XLSX, CSV, ODS, HTML или RTF. На выходе узел возвращает двоичные данные, которые можно сразу передать в узел загрузки в облачное хранилище или отправки по email.
Где физически хранятся файлы при использовании n8n?
Сами файлы временно хранятся в оперативной памяти (или в временных файлах, в зависимости от настроек) во время выполнения рабочего процесса. n8n не является файловым хранилищем. После завершения выполнения рабочего процесса двоичные данные, если они не были сохранены во внешнюю систему, удаляются. Для постоянного хранения всегда используйте интеграцию с внешними хранилищами (S3, Google Drive и т.д.).
Заключение
Загрузка и обработка файлов в n8n — мощный и гибкий механизм, основанный на концепции двоичных данных. Понимание работы узлов, отвечающих за импорт, обработку и экспорт файлов, позволяет создавать сложные автоматизированные workflows для обработки документов, изображений, архивов и данных любого формата. Ключ к успеху — правильная комбинация узлов, учет ограничений на размер данных и обязательное использование надежных внешних хранилищ для долговременного сохранения результатов работы.
Комментарии