نود Compression در N8N
نود Compression در n8n برای فشردهسازی (Compress) و استخراج (Decompress/Extract) فایلها و دادههای باینری استفاده میشود. اگر در ورکفلو با فایلهای حجیم، آرشیوهای ZIP، ارسال و دریافت فایل از سرویسها، یا ذخیرهسازی بهینه سر و کار دارید، این نود یکی از کاربردیترین ابزارها برای مدیریت حجم و بستهبندی فایلهاست.
معرفی نود در N8N
نود Compression به شما اجازه میدهد دادههای فایل (Binary) را به آرشیو فشرده تبدیل کنید یا یک آرشیو را باز کرده و فایلهای داخل آن را به خروجی برگردانید.
- کارکرد اصلی: Compress / Decompress (فشردهسازی و استخراج)
- دستهبندی نود: Action (عملیاتی)
- اهمیت در ورکفلوها: کاهش حجم انتقال بین سرویسها، بستهبندی چند فایل در یک فایل، استخراج خودکار فایلهای دریافتی از ایمیل/FTP/HTTP، و آمادهسازی فایل برای آرشیو و بکاپ
موارد استفاده
1) استخراج فایل ZIP دریافتشده از ایمیل
- نودهای پیشنهادی: IMAP Email (دریافت ایمیل) → Compression (Extract) → Spreadsheet File یا CSV (خواندن) → Google Sheets (ثبت دادهها)
- کاربرد واقعی: دریافت گزارشهای روزانه که به صورت ZIP ارسال میشوند و ثبت خودکار محتوا در سیستم گزارشگیری
2) فشردهسازی خروجی گزارش و آپلود در فضای ذخیرهسازی
- نودهای پیشنهادی: HTTP Request (گرفتن فایل/گزارش) → Compression (Compress) → S3 یا Google Drive (آپلود)
- کاربرد واقعی: کاهش حجم فایلهای خروجی و صرفهجویی در هزینه و زمان آپلود
3) بستهبندی چند فایل در یک ZIP و ارسال به کاربر
- نودهای پیشنهادی: Read Binary File (خواندن چند فایل) → Merge (ترکیب آیتمها) → Compression (Compress به ZIP) → Email Send یا HTTP Response
- کاربرد واقعی: ساخت «پکیج دانلود» شامل چند فایل (PDF + تصاویر + خروجی اکسل) در یک فایل ZIP
4) پردازش فایلهای آپلودشده از فرم/وبهوک
- نودهای پیشنهادی: Webhook (دریافت فایل) → Compression (Extract) → IF (بررسی نوع/نام فایل) → Upload/Process
- کاربرد واقعی: کاربران یک ZIP آپلود میکنند و شما فایلهای داخل را جدا کرده و هر کدام را مسیر جداگانه پردازش میکنید
پارامترها و تنظیمات
در نود Compression معمولاً با چند مفهوم کلیدی کار میکنید: Operation (نوع عملیات)، Format (فرمت فشردهسازی)، و Binary Property (نام پراپرتی باینری که فایل داخل آن قرار دارد).
فیلدها و پارامترهای اصلی
- Operation (نوع داده: String / انتخابی)
کاربرد: تعیین میکند فشردهسازی انجام شود یا استخراج.
مثال عملی: وقتی یک فایل ZIP از ایمیل دریافت کردهاید، Operation را روی Extract/Decompress قرار میدهید.
- Compression Format یا Archive Format (نوع داده: String / انتخابی)
کاربرد: تعیین نوع آرشیو (معمولاً ZIP) و روش کار نود با آن.
مثال عملی: برای ساخت فایل خروجی قابل دانلود عمومی، معمولاً zip انتخاب میشود.
- Binary Property (Input) (نوع داده: String)
کاربرد: نام فیلدی که فایل ورودی در آن قرار دارد. در n8n اغلب فایلها در binary و زیرکلیدهایی مثل data، file، attachment_0 ذخیره میشوند.
مثال عملی: اگر از Webhook فایلی با نام data گرفتهاید، این مقدار را data بگذارید.
- Binary Property (Output) (نوع داده: String)
کاربرد: تعیین میکند خروجی باینری با چه نامی ذخیره شود تا در نودهای بعدی استفاده کنید.
مثال عملی: خروجی ZIP را با نام archive ذخیره کنید و سپس در S3 آپلود کنید.
- File Name / Archive Name (نوع داده: String)
کاربرد: نام فایل خروجی هنگام فشردهسازی.
مثال عملی: report-{{$now.toFormat(“yyyy-LL-dd”)}}.zip
- Include/Exclude Paths یا تنظیمات مربوط به مسیر فایلها (نوع داده: String/Boolean بسته به نسخه)
کاربرد: کنترل اینکه ساختار پوشهها داخل آرشیو حفظ شود یا خیر، یا فیلتر کردن برخی فایلها.
مثال عملی: اگر فقط فایلهای .csv را میخواهید، فیلتر را بر همان اساس تنظیم کنید.
نکات مهم هنگام پیکربندی
- حتماً نام Binary Property را درست بگذارید: رایجترین دلیل خطا این است که نود دنبال فایلی در کلیدی میگردد که وجود ندارد.
- از نودهای تولید/خواندن باینری استفاده کنید: مثل Read Binary File، HTTP Request (با پاسخ فایل)، IMAP Email (attachment) یا Webhook (multipart).
- روی تعداد آیتمها حساس باشید: اگر چند آیتم دارید، نود ممکن است برای هر آیتم یک خروجی بسازد؛ برای ساخت یک ZIP از چند فایل، معمولاً باید آیتمها را با Merge/Item Lists درست مدیریت کنید.
ورودیها و خروجیها
ورودی (Input) نود
این نود معمولاً انتظار دارد حداقل یک Binary در آیتم ورودی وجود داشته باشد. ساختار کلی یک آیتم ورودی فایلدار در n8n شبیه نمونه زیر است:
{ "json": { "source": "email" }, "binary": { "data": { "fileName": "attachments.zip", "mimeType": "application/zip", "fileSize": 245781, "data": "BASE64..." } }}خروجی (Output) نود
- در حالت Compress: معمولاً یک فایل آرشیو (مثلاً ZIP) در بخش binary خروجی قرار میگیرد.
- در حالت Extract/Decompress: بسته به تنظیمات، ممکن است برای هر فایل داخل آرشیو یک آیتم جدا تولید شود یا چند فایل به شکل چند پراپرتی باینری در یک/چند آیتم قرار بگیرند.
نمونه خروجی در حالت فشردهسازی (Compress):
{ "json": { "archiveName": "report-2026-02-20.zip" }, "binary": { "archive": { "fileName": "report-2026-02-20.zip", "mimeType": "application/zip", "fileSize": 104857, "data": "BASE64..." } }}نمونه خروجی در حالت استخراج (Extract) برای یک فایل داخل ZIP:
{ "json": { "entryName": "data/orders.csv" }, "binary": { "data": { "fileName": "orders.csv", "mimeType": "text/csv", "fileSize": 54321, "data": "BASE64..." } }}نکات پیشرفته و ترفندها
مدیریت چند فایل برای ساخت یک ZIP واحد
- اگر چند فایل دارید و میخواهید یک ZIP واحد بسازید، باید آنها را به شکلی به نود Compression بدهید که بتواند همه را در یک آرشیو قرار دهد. معمولاً این کار با ترکیب آیتمها (Merge) یا ساخت یک ساختار لیستی از فایلها انجام میشود.
- یک الگوی رایج: چند فایل را با Read Binary File بخوانید → با Merge در یک جریان قرار دهید → سپس Compression را طوری تنظیم کنید که همه آیتمها را در یک آرشیو خروجی تولید کند (رفتار دقیق به نسخه n8n و تنظیمات نود بستگی دارد).
استخراج و مسیریابی فایلها بر اساس نام
- بعد از Extract، از IF یا Switch استفاده کنید و بر اساس entryName یا fileName تصمیم بگیرید هر فایل به کدام مسیر برود.
- مثال: فایلهای .csv به پردازش داده، فایلهای .pdf به آرشیو اسناد.
بهینهسازی عملکرد
- فایلهای خیلی بزرگ: فشردهسازی/استخراج فایلهای حجیم CPU و RAM را درگیر میکند. اگر روی سرور ضعیف اجرا میکنید، زمانبندی (Schedule) را در ساعات خلوت بگذارید.
- کاهش رفتوبرگشت داده: اگر قرار است فایل فقط آرشیو شود و آپلود گردد، از تبدیلهای اضافی (مثلاً تبدیل به JSON یا پردازشهای غیرضروری) اجتناب کنید.
- نامگذاری خروجی استاندارد: از تاریخ/شناسه در نام فایل استفاده کنید تا روی فضای ذخیرهسازی تداخل ایجاد نشود.
ترکیب پیشرفته با نودهای دیگر
- Compression + HTTP Request: دریافت یک ZIP از URL، استخراج، سپس آپلود فایلهای استخراجشده به یک سرویس دیگر.
- Compression + Crypto: اگر نیاز دارید آرشیو را قبل از ارسال رمزنگاری کنید (در صورت وجود نود/روش رمزنگاری در ورکفلو).
- Compression + Code: تولید داینامیک لیست فایلها، تغییر نام فایلها قبل از آرشیو، یا حذف/فیلتر فایلها بر اساس قواعد سفارشی.
محدودیتها و خطاها
محدودیتها
- وابستگی به Binary: این نود برای کار با فایل باید ورودی باینری معتبر داشته باشد؛ برای متن/JSON خام مناسب نیست مگر اینکه ابتدا به فایل/باینری تبدیل شود.
- مصرف منابع: آرشیوهای بزرگ یا تعداد زیاد فایلها میتواند باعث کندی ورکفلو یا فشار به حافظه شود.
- فرمتها: قابلیتها به فرمتهای پشتیبانیشده توسط نود و نسخه n8n محدود است؛ رایجترین حالت ZIP است.
خطاهای رایج و راهحلها
- خطا: Binary property not found
علت: نام Binary Property اشتباه است یا فایل اصلاً در ورودی وجود ندارد.
راهحل: خروجی نود قبلی را بررسی کنید و ببینید فایل دقیقاً در binary با چه کلیدی ذخیره شده است (مثلاً data یا file). همان را در Compression وارد کنید.
- خطا: Unsupported archive / invalid format
علت: فایل ورودی واقعاً ZIP معتبر نیست یا فرمت انتخابی با محتوای فایل همخوانی ندارد.
راهحل: mimeType و fileName را بررسی کنید، فرمت صحیح را انتخاب کنید، و در صورت نیاز فایل را قبل از ارسال به n8n اصلاح کنید.
- خروجی خالی بعد از Extract
علت: آرشیو رمزدار است، یا ساختار آرشیو/فیلترها باعث شده چیزی استخراج نشود.
راهحل: اگر آرشیو پسورد دارد، ابتدا باید در مسیر دیگری رمزگشایی شود (در صورت نبود پشتیبانی مستقیم). همچنین تنظیمات فیلتر/مسیر را بررسی کنید.
ایده ها
- ساخت سیستم آرشیو خودکار: جمعآوری فایلهای روزانه و تولید یک ZIP ماهانه و آپلود در S3/Drive.
- پردازش خودکار رزومهها: دریافت ZIP رزومهها، استخراج PDFها، نامگذاری بر اساس الگو و انتقال به پوشههای جداگانه.
- بستهبندی خروجی پروژه: جمعآوری خروجی چند سرویس (CSV، PDF، تصاویر) و ساخت یک فایل دانلود واحد برای مشتری.
- تبدیل ورودی کاربران: کاربران ZIP آپلود میکنند، سیستم فایلها را Extract میکند و فقط فایلهای مجاز را نگه میدارد.
- انتشار داده: دریافت ZIP دیتاست از یک منبع، استخراج، اعتبارسنجی، و آپلود خودکار به مخزن داخلی.
