Dựa trên video hướng dẫn của n8n Official
Bạn đang gặp khó khăn khi xử lý files trong n8n workflow? Mình hiểu rằng việc làm việc với files có thể khá phức tạp, đặc biệt khi bạn mới bắt đầu.
Trong bài viết này, mình sẽ tóm tắt chi tiết về cách xử lý files từ video số 7 của khóa học n8n Advanced. Mình đã chắt lọc những kiến thức quan trọng nhất để bạn có thể áp dụng ngay vào workflow của mình nhé!
Nội Dung Chính
Giới thiệu về Binary View trong n8n
Khi làm việc với files trong n8n, một tính năng quan trọng mà bạn cần biết là Binary View. Đây là một option mới xuất hiện bên cạnh các view quen thuộc như JSON, Table và Schema.
Điểm Chính:
- Binary View cho phép bạn xem trước và tải xuống files trực tiếp từ workflow
- Khi làm việc chỉ với files, các view Table, JSON và Schema sẽ trống
- Binary View hiển thị thông tin chi tiết về file: tên, thư mục, loại file, kích thước, v.v.
Ý Kiến Của Mình:
Binary View thực sự là một game-changer khi làm việc với files trong n8n. Trước đây, việc kiểm tra nội dung file trong workflow khá khó khăn, nhưng giờ đây bạn có thể xem preview trực tiếp, đặc biệt hữu ích với các file hình ảnh hoặc văn bản nhé!
Các Node chính để xử lý files
n8n cung cấp nhiều node hữu ích để làm việc với files, tất cả đều nằm trong category “File”. Mình sẽ giới thiệu một số node quan trọng nhất mà bạn sẽ thường xuyên sử dụng.
Các Node quan trọng:
- Compress Files: Nén nhiều files thành một file zip
- Decompress Files: Giải nén các file từ định dạng zip
- Read Binary File: Đọc files từ ổ đĩa (đặc biệt hữu ích khi self-hosting)
- Write Binary File: Lưu files vào ổ đĩa
- Convert to/from file: Chuyển đổi giữa JSON objects và định dạng file
Ý Kiến Của Mình:
Những node này mở ra rất nhiều khả năng trong việc xử lý dữ liệu. Mình thấy việc kết hợp chúng với HTTP Request node cực kỳ mạnh mẽ để tạo các automation liên quan đến files từ nhiều nguồn khác nhau. Bạn có thể tưởng tượng việc tự động tải xuống, xử lý và lưu trữ files mà không cần sự can thiệp thủ công, phải không?
Ví dụ: Lấy và nén files
Hãy xem một ví dụ thực tế về cách sử dụng HTTP Request để lấy files và sau đó nén chúng lại.
Các bước thực hiện:
- Sử dụng HTTP Request node để tải logo n8n (định dạng file được chỉ định trong “Expected Response Format”)
- Thêm một HTTP Request node khác để tải một file ảnh workflow
- Sử dụng node Compress Files để gộp cả hai ảnh vào một file zip
- Thiết lập output format là “zip” và đặt tên cho file nén
// Cấu hình cho HTTP Request node
{
"url": "https://n8n.io/logo.svg",
"method": "GET",
"responseFormat": "file",
"outputFieldName": "logo"
}
// Cấu hình cho Compress Files node
{
"operation": "compress",
"fileNames": ["logo", "workflow"],
"outputFormat": "zip",
"fileName": "compressed.zip"
}
Ý Kiến Của Mình:
Một điều thú vị mình nhận thấy là cách các binary items được append vào nhau. Không giống như JSON data thông thường, khi bạn có 2 HTTP Request liên tiếp trả về files, n8n sẽ giữ cả hai trong output mà không ghi đè lên nhau. Điều này cực kỳ tiện lợi khi bạn muốn thu thập nhiều files từ các nguồn khác nhau nhé!
Ví dụ: Giải nén và xử lý nhiều files
Bây giờ mình sẽ hướng dẫn bạn thực hiện quy trình ngược lại: lấy một file zip, giải nén và xử lý các files riêng biệt.
Các bước thực hiện:
- Sử dụng HTTP Request để tải một file zip từ server
- Dùng Decompress node để giải nén và trích xuất các files bên trong
- Sử dụng Code node để tách các files thành các items riêng biệt
- Tiếp tục xử lý mỗi file với các node tiếp theo trong workflow
// Code node để tách các files thành các items riêng biệt
const items = [];
const files = $input.first().binary.data;
// Tách mỗi file thành một item riêng
Object.keys(files).forEach(key => {
items.push({
json: {},
binary: {
data: files[key]
}
});
});
return items;
Ý Kiến Của Mình:
Thủ thuật tách files từ một item thành nhiều items thông qua Code node là một kỹ thuật cực kỳ hữu ích! Mình thấy đây là một pattern phổ biến khi làm việc với archives trong n8n. Sau khi tách ra, bạn có thể dễ dàng áp dụng các hoạt động riêng biệt cho từng file, hoặc thậm chí là lọc chỉ những files bạn quan tâm trước khi xử lý tiếp. Quá tiện lợi đúng không?