نود Convert to File در N8N

نود Convert to File در N8N

گاهی در ورکفلو به داده‌ای مثل JSON، متن، HTML یا خروجی یک API می‌رسید، اما نود بعدی «فایل» می‌خواهد؛ مثلاً برای آپلود در Google Drive، ارسال ایمیل به‌صورت پیوست، یا ذخیره در S3. نود Convert to File دقیقاً برای همین ساخته شده است: تبدیل داده‌های متنی/ساخت‌یافته به یک فایل باینری قابل استفاده در n8n.

معرفی نود در N8N

نود Convert to File داده‌های موجود در آیتم‌ها را به Binary Data تبدیل می‌کند و در خروجی، یک ویژگی باینری (مثل data) می‌سازد که نودهای فایل‌محور می‌توانند از آن استفاده کنند.

  • کارکرد اصلی: ساخت فایل (Binary) از متن/JSON/داده موجود در فیلدهای آیتم
  • دسته‌بندی نود: Action (ابزاری/داخلی برای آماده‌سازی داده)
  • اهمیت در ورکفلوها: پل ارتباطی بین «دنیای داده» (JSON/Text) و «دنیای فایل» (Upload/Email/Storage)

موارد استفاده

1) ساخت گزارش JSON و آپلود در Google Drive

  • API Call (HTTP Request) → دریافت داده‌های گزارش
  • Convert to File → تبدیل JSON به فایل report.json
  • Google Drive → Upload

2) ساخت فایل CSV از داده‌ها و ارسال با ایمیل

  • Read from DB (MySQL/Postgres) → دریافت ردیف‌ها
  • Spreadsheet File (یا Code) → تبدیل داده‌ها به CSV متنی
  • Convert to File → ساخت فایل export.csv
  • Email (SMTP/Gmail) → ارسال به عنوان attachment

3) ذخیره HTML به عنوان فایل و آرشیو در S3

  • Set → تولید/قالب‌بندی HTML
  • Convert to File → ساخت page.html با MIME مناسب
  • AWS S3 → Upload

4) ساخت فایل متنی لاگ و ارسال به Slack/Teams

  • Merge/Collect → جمع‌آوری پیام‌ها یا خطاها
  • Convert to File → ساخت log.txt
  • Slack (Upload file) یا ارسال از طریق HTTP به سرویس موردنظر

ترکیب‌های رایج با نودهای دیگر

  • Convert to File + Google Drive/Dropbox/OneDrive: آپلود فایل خروجی
  • Convert to File + Email: ارسال پیوست
  • Convert to File + AWS S3: آرشیو و نگهداری فایل‌ها
  • Convert to File + Compress: ساخت فایل و سپس ZIP کردن

پارامترها و تنظیمات

هدف اصلی تنظیمات این نود مشخص کردن «چه داده‌ای» به فایل تبدیل شود و «با چه نام/فرمت/نوع محتوا» ذخیره گردد. نام گزینه‌ها ممکن است بسته به نسخه n8n کمی متفاوت باشد، اما مفهوم و منطق ثابت است.

فیلدهای اصلی

  • Source / Input (منبع داده)
    • نوع داده: انتخابی (Option)
    • کاربرد: تعیین می‌کند محتوا از کجا خوانده شود (مثلاً از یک فیلد متنی در JSON آیتم)
    • مثال عملی: اگر متن شما در {{$json.content}} است، منبع را روی فیلد/Expression قرار دهید و همین مقدار را انتخاب کنید.
  • Data / Content (محتوا)
    • نوع داده: String (یا Expression)
    • کاربرد: متن/JSON/CSV/HTML که باید به فایل تبدیل شود
    • مثال عملی: {{$json.csvText}} برای ساخت فایل CSV
  • Binary Property (نام ویژگی باینری)
    • نوع داده: String
    • کاربرد: تعیین می‌کند فایل ساخته‌شده در خروجی زیر چه نامی قرار بگیرد (مثلاً data یا file)
    • مثال عملی: مقدار data (رایج‌ترین حالت). سپس در نود آپلود، همین نام را انتخاب می‌کنید.
  • File Name (نام فایل)
    • نوع داده: String (یا Expression)
    • کاربرد: نام فایل خروجی
    • مثال عملی: report-{{$now.toFormat('yyyy-LL-dd')}}.json
  • Mime Type / Content Type (نوع محتوا)
    • نوع داده: String
    • کاربرد: تعیین نوع فایل برای سازگاری بهتر با دانلود/آپلود و سرویس‌های مقصد
    • مثال‌های رایج:
      • application/json برای JSON
      • text/csv برای CSV
      • text/plain برای TXT
      • text/html برای HTML
      • application/xml برای XML
  • Encoding (کدگذاری متن)
    • نوع داده: انتخابی (معمولاً UTF-8)
    • کاربرد: اگر خروجی فارسی/یونیکد دارید، معمولاً utf8 بهترین انتخاب است.
    • مثال عملی: برای فایل CSV فارسی، UTF-8 انتخاب شود تا حروف به‌هم نریزد (در برخی نرم‌افزارها ممکن است نیاز به BOM یا تنظیمات جداگانه باشد).

نکات مهم هنگام پیکربندی

  • پسوند فایل را با نوع محتوا هماهنگ کنید: اگر MIME را application/json گذاشته‌اید، بهتر است نام فایل .json باشد.
  • نام Binary Property را ثابت نگه دارید: مثلاً همیشه data تا در نودهای بعدی (آپلود/ایمیل) سردرگمی ایجاد نشود.
  • اگر محتوا JSON است، ابتدا آن را String کنید: بعضی سناریوها نیاز دارند که آبجکت JSON را به متن JSON تبدیل کنید (مثلاً با نود Set/Code و JSON.stringify).
  • حجم داده را مدیریت کنید: تبدیل متن‌های خیلی بزرگ به فایل می‌تواند مصرف RAM را بالا ببرد؛ در سناریوهای حجیم، بخش‌بندی (batch) را در نظر بگیرید.

ورودی‌ها و خروجی‌ها

ورودی (Input)

این نود معمولاً یک یا چند آیتم JSON دریافت می‌کند. محتوا ممکن است در فیلدی مثل content یا csvText باشد.

نمونه ورودی:

{  "content": "{"name":"Ali","score":18}",  "meta": {    "type": "report"  }}

خروجی (Output)

در خروجی، علاوه بر JSON آیتم (که معمولاً حفظ می‌شود)، یک بخش باینری ساخته می‌شود که شامل اطلاعات فایل است.

نمونه خروجی (ساختار رایج باینری در n8n):

{  "json": {    "content": "{"name":"Ali","score":18}",    "meta": {      "type": "report"    }  },  "binary": {    "data": {      "fileName": "report.json",      "mimeType": "application/json",      "fileExtension": "json",      "data": "base64-encoded-content..."    }  }}
  • json: داده اصلی
  • binary.data: فایل ساخته‌شده (نام property ممکن است به تنظیم شما وابسته باشد)

نکات پیشرفته و ترفندها

1) ساخت نام فایل داینامیک با تاریخ/شناسه

برای جلوگیری از overwrite در مقصد (مثل Drive یا S3)، نام فایل را داینامیک کنید:

export-{{$execution.id}}-{{$now.toFormat('yyyyLLdd-HHmm')}}.csv

2) تولید محتوای JSON استاندارد قبل از تبدیل

اگر داده شما آبجکت است و می‌خواهید JSON زیبا (Pretty) بسازید، در نود Code می‌توانید:

return items.map(i => ({  json: {    ...i.json,    content: JSON.stringify(i.json, null, 2)  }}));

سپس content را به فایل تبدیل کنید.

3) ترکیب با Merge برای ساخت یک فایل واحد از چند آیتم

اگر چند آیتم دارید و می‌خواهید یک فایل نهایی بسازید:

  • Item Lists / Merge (Combine) → تبدیل چند آیتم به یک آرایه/متن واحد
  • Convert to File → ساخت فایل نهایی

4) ساخت فایل‌های چندگانه در یک اجرای ورکفلو

اگر هر آیتم باید فایل جدا بسازد، کافی است هر آیتم فیلدهای content و fileName مخصوص خودش را داشته باشد؛ Convert to File روی هر آیتم یک فایل مجزا در باینری می‌سازد.

5) بهینه‌سازی مسیرهای دانلود/آپلود

  • اگر مقصد شما فایل می‌خواهد، تلاش کنید از ابتدا داده را به فایل تبدیل کنید و از تبدیل‌های رفت و برگشتی (JSON→Text→JSON) پرهیز کنید.
  • برای داده‌های حجیم، از Batch (Split in Batches) استفاده کنید تا مصرف حافظه کنترل شود.

محدودیت‌ها و خطاها

محدودیت‌ها

  • محدودیت حافظه: تبدیل متن‌های بسیار بزرگ به فایل می‌تواند باعث افزایش مصرف RAM و کندی شود.
  • نیاز به محتوای متنی/قابل تبدیل: اگر داده شما از قبل باینری است، معمولاً نیاز به Convert to File ندارید و باید از نودهای مدیریت باینری استفاده کنید.
  • فرمت‌های پیچیده: این نود «فایل» می‌سازد، اما تبدیل معنایی فرمت‌ها (مثلاً JSON به XLSX واقعی) نیاز به نودهای تخصصی‌تر دارد.

خطاهای رایج و راه‌حل‌ها

  • خطا: محتوا خالی است یا undefined
    • علت: Expression اشتباه است یا فیلد در برخی آیتم‌ها وجود ندارد.
    • راه‌حل: قبل از Convert to File با نود IF وجود فیلد را چک کنید، یا مقدار پیش‌فرض بگذارید (مثلاً {{$json.content || ''}}).
  • فایل ساخته می‌شود اما در نود آپلود دیده نمی‌شود
    • علت: Binary Property Name در Convert to File با فیلدی که نود مقصد انتظار دارد یکی نیست.
    • راه‌حل: در نود مقصد، نام باینری صحیح (مثلاً data) را انتخاب کنید.
  • به‌هم ریختگی کاراکترهای فارسی
    • علت: Encoding نامناسب یا رفتار نرم‌افزار مقصد (مثلاً Excel) در تشخیص UTF-8.
    • راه‌حل: Encoding را UTF-8 بگذارید، و برای CSV در صورت نیاز خروجی را طوری تولید کنید که با ابزار مقصد سازگار باشد (در برخی پروژه‌ها استفاده از XLSX به‌جای CSV نتیجه بهتری می‌دهد).
  • MIME Type اشتباه و تشخیص نادرست فایل
    • علت: MIME با پسوند/محتوا همخوانی ندارد.
    • راه‌حل: MIME و پسوند را هماهنگ کنید (JSON: application/json، CSV: text/csv، PDF: application/pdf).

ایده ها

  • ساخت فایل Changelog از خروجی GitHub Releases و آپلود روزانه در Drive
  • تولید فایل تنظیمات (config.json) از داده‌های یک فرم و ارسال به تیم فنی به‌صورت پیوست ایمیل
  • ساخت فایل HTML گزارش از داده‌های فروش و آرشیو ماهانه در S3
  • تبدیل خروجی یک API به فایل CSV و ارسال خودکار به واحد مالی
  • ساخت فایل متنی لاگ خطاها پس از اجرای ورکفلو و ذخیره در یک پوشه مرکزی

منابع و مستندات اصلی

دسته بندی: N8N برچسب ها:

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پنج × سه =