Se stai iniziando con l’automazione e vuoi far volare la produttività, imparare a gestire l’n8n file upload è un ottimo primo passo. In questo articolo scoprirai come ricevere file da form e app (anche con webhook multipart/form‑data n8n), come farli viaggiare tra i nodi usando la proprietà binary in n8n, come restituire una risposta scaricabile al client e come archiviare in modo sicuro su Amazon S3 o Google Drive. Ti guiderò passo dopo passo con esempi pratici, snippet pronti e “trucchi da marketer” per casi d’uso concreti: CSV di lead, fogli Excel di campagne, creatività da rielaborare con AI. Copriremo anche sicurezza, limiti e performance, così eviti intoppi tipici (es. dimensioni file, MIME type, percorsi in Docker). L’obiettivo: farti realizzare un workflow completo — dall’upload al download fino allo storage — con istruzioni chiare e funzionali. Che tu lavori in team marketing o growth, alla fine avrai una base solida per collegare moduli web, CRM, fogli di calcolo e persino integrazioni AI, e trasformare un semplice n8n file upload nella tua prima automazione “end‑to‑end”.
Capire come n8n gestisce i file: JSON, proprietà binary e flusso tra i nodi
Per “parlare” correttamente con n8n serve capire il suo modello dati: ogni nodo elabora e passa avanti una lista di item. Ogni item ha due sezioni:
- json: i campi strutturati (testo, numeri, ecc.);
- binary: i file e i loro contenuti.
Quando fai un upload di file su n8n, il contenuto non va in json ma nella sezione binary dell’item. Questo è cruciale: i nodi che “aspettano” file guardano il binary alla proprietà che indichi (ad esempio “file” o “data”). Tra un nodo e l’altro il file viaggia come parte dell’item, e i nodi possono leggerlo, trasformarlo, o salvarlo.
Proprietà binary: come si mappa il file e come viaggia tra i nodi
- Il Webhook (o Form Trigger) crea l’item iniziale. Se configuri la ricezione di file, n8n scrive il contenuto nella sezione binary con il nome di proprietà che imposti.
- I nodi downstream (per esempio, quelli di parsing o di storage) leggeranno la stessa proprietà binary. Mantieni il nome coerente nel flusso per evitare “file not found”.
- Se devi cambiare nome di proprietà o convertire formato, puoi usare i nodi dedicati ai file (vedi sotto) o includere la binary nei passaggi con i nodi di trasformazione.
Metadati utili (nome, MIME type, dimensione) e perché contano
Anche se lavori “alla cieca” sul contenuto, i metadati contano per:
- impostare correttamente il Content-Type in un download;
- decidere se un file supera la soglia di elaborazione (es. limitare XLSX sopra una certa dimensione);
- creare naming chiari e versionati quando archivi su S3/Drive.
Suggerimento: standardizza il naming (es. campaign/YYYY/MM/leadlist-{timestamp}.xlsx) e conserva nei json le informazioni di contesto (ID campagna, canale, ecc.).
Webhook Trigger con multipart/form‑data: dal form al workflow (con test cURL/Postman)
Per ricevere file da un form o da un’app, usa il Webhook Trigger.
Passi consigliati:
1) Aggiungi il nodo Webhook Trigger.
2) Imposta HTTP Method su POST.
3) Definisci il Path (es. /upload).
4) Abilita la ricezione di binary e imposta Binary Property con il nome che userai nel workflow (es. file).
5) Facoltativo ma utile per frontend: compila Allowed Origins (CORS) con il dominio del tuo form.
6) Attiva il workflow o usa la Test URL in modalità esecuzione.
Test rapido con cURL (multipart/form‑data):
- Supponendo che la Binary Property sia “file”, invia un POST con il campo form “file”.
Esempio:
curl -X POST “https://tua-istanza.n8n.cloud/webhook/upload” \
-F “file=@/percorso/al/tuo/documento.xlsx” \
-F “note=Lead settembre”
Nel workflow, potrai accedere ai campi testuali via espressione (per esempio, {{ $json.body.note }}) e il file sarà disponibile in item.binary.file. Per form/tool come Postman, imposta Body → form-data e allega il file con lo stesso nome campo.
Suggerimenti pratici:
- Se dall’app esterna invii più file, caricali con nomi campo distinti (file1, file2) e gestiscili come proprietà binary diverse nel workflow.
- In test locali usa il Production URL solo con workflow attivato; per debug usa la Test URL in esecuzione.
Passare e trasformare i file tra nodi: includere la binary, convertire e normalizzare
Quando trasformi dati, assicurati che la proprietà binary viaggi insieme al json.
Metodi utili:
- Edit Fields (Set): usa l’opzione Include Binary Data per mantenere i file in output quando rimappi i campi JSON (utile per normalizzare i metadati o aggregare contesto prima di un upload).
- Convert to File: quando hai un contenuto testuale/JSON e vuoi generare un file (per esempio, un report .txt o un CSV costruito a runtime).
- Extract From File: quando hai un file in binary e vuoi estrarne i dati in JSON.
Esempio di passaggio dati:
- Webhook (binary: file)
- Extract From File (legge binary.file e produce JSON)
- Edit Fields (Set) con Include Binary Data abilitato per conservare il file originale insieme ai dati estratti
- Nodo storage (S3/Drive) che usa la stessa proprietà binary.file per salvare l’originale e il JSON per i metadati.
Insight per marketer:
- Mantieni sempre nel json i riferimenti di campagna (ID, canale, data), così puoi cercare e riconciliare facilmente gli upload in storage o CRM.
- Se ti serve “duplicare” il file con naming diversi (es. originale e normalizzato), usa Convert to File per rigenerare una copia con nome coerente e versionato.
Parsing di CSV/XLSX in n8n: dalla tabella ai lead utilizzabili
Per fogli Excel e CSV la via più semplice è partire dal file ricevuto nel webhook e convertirlo in JSON utilizzabile per matching con CRM o invio a Google Sheets.
Pattern consigliato per XLSX:
1) Webhook → Binary Property: file
2) Extract From File → Operation: Extract From XLSX
- Input Binary Field: file
- Destination Output Field: (es.) rows
3) L’output sarà JSON tabellare sfruttabile per: - deduplicare lead con un HTTP Request verso il tuo CRM;
- creare liste segmentate;
- scrivere su Google Sheets con mappatura automatica.
Per CSV:
- Se ricevi CSV standard, puoi convertirlo in JSON e poi normalizzare le intestazioni con Edit Fields (Set). In alternativa, genera prima uno XLSX “pulito” con Convert to File e usa Extract From File → Extract From XLSX se preferisci una struttura consistenze (dipende dal formato del CSV e dal tuo caso d’uso).
Best practice:
- Verifica la prima riga come header e normalizza i nomi colonna (minuscolo, snake_case).
- Per “batching e limiti dimensione file n8n” suddividi l’elaborazione in chunk (Split in Batches) se devi processare molte righe in API esterne.
Download: come restituire un file o un link al chiamante (Webhook Response)
Per confermare subito la ricezione (ottimo per form/UX), usa Respond To Webhook con una risposta immediata.
Esempio configurazione testata (JSON) per risposta immediata:
{
“name”: “Webhook Response”,
“type”: “n8n-nodes-base.respondToWebhook”,
“typeVersion”: 1,
“parameters”: {
“responseMode”: “responseNode”,
“options”: {
“responseData”: {
“body”: “{\”success\”: true, \”message\”: \”Processed\”}”,
“headers”: {
“Content-Type”: “application/json”
},
“statusCode”: 200
}
}
}
}
Per un vero “file download” hai due strategie:
- Restituire un link firmato/di condivisione al file salvato (consigliato per file grandi).
- Rispondere direttamente con un file binario (più complesso e dipendente dalla configurazione; in alternativa, invia link).
Suggerito per marketer:
- Salva il file su storage (S3/Drive), genera un link (presigned URL S3 o link condiviso Drive) e invialo nel body della Response come JSON. È più robusto di un download diretto, soprattutto dietro CDN o limiti di timeout.
Storage: Amazon S3 e Google Drive per archiviazione e distribuzione
Archiviazione operativa (workflow):
- Amazon S3 con n8n: carica la proprietà binary su un bucket con un object key coerente (es. campaign/2025/11/leads-20251101.xlsx). Una volta archiviato, puoi generare o recuperare un link (presigned URL S3 con n8n via API AWS o servizio esterno) e restituirlo al chiamante nel Webhook Response.
- Google Drive e n8n per archiviazione: carica il file nella cartella di progetto (folder ID), imposta permessi di condivisione (se serve pubblico/organizzazione) e usa l’URL di condivisione come output.
Configurazione della piattaforma per binary data (scalabilità, self‑hosting):
- Per istanze self‑hosted puoi impostare dove n8n conserva i file temporanei/binary:
- N8NAVAILABLEBINARYDATAMODES (lista delle modalità disponibili, es. filesystem, s3)
- N8NDEFAULTBINARYDATAMODE (default | filesystem | s3)
- N8NBINARYDATASTORAGEPATH (percorso storage in filesystem)
- Modalità S3 (Enterprise): esternalizza automaticamente i binary su un bucket S3, migliorando resilienza e scalabilità quando l’upload di file su n8n cresce con la tua operatività.
Naming e versioning:
- Usa timestamp nel nome file e prefissi per campagna/canale.
- Salva metadati rilevanti nel json dell’item (es. campaign_id, channel, uploader).
Sicurezza, limiti e performance: endpoint sicuri e workflow stabili
Sicurezza endpoint webhook n8n:
- CORS: compila Allowed Origins (CORS) con il dominio del tuo form.
- IP(s) Whitelist: limita le chiamate a IP affidabili (se possibile).
- Ignore Bots: filtra i bot (anteprime link ecc.) per ridurre rumore.
- Autenticazione a livello app: usa header custom (es. X-Api-Key) e verifica con un Code node o condizione prima di processare file.
Performance e limiti:
- Evita di restituire file molto grandi direttamente: meglio link (Webhook Response file download tramite URL).
- Suddividi l’elaborazione in lotti (Split in Batches) quando devi fare chiamate API massicce su migliaia di righe da CSV/XLSX.
- Se sei in Docker, monta un volume per file locali e usa percorsi consistenti nei nodi “Read/Write Files from Disk”.
Pratica consigliata:
- Imposta una dimensione massima lato form e lato reverse proxy (Nginx) per evitare upload eccessivi.
- Usa naming coerente e MIME type corretto (gestione MIME type e filename in n8n) per semplificare i flussi di download e anteprima.
Lato desktop e Docker: leggere file locali in modo sicuro
Per leggere file da disco:
- Usa Read/Write Files from Disk quando il file è accessibile al runtime n8n.
- In Docker mappa il volume: ad esempio -v /host/path/uploads:/data/uploads e leggi in n8n da /data/uploads/nomefile.ext.
- Su n8n Desktop puoi puntare a percorsi locali, ma verifica i permessi.
Consiglio operativo:
- Se il file nasce sul tuo PC ma n8n gira in cloud, usa storage cloud (S3/Drive) come “ponte” anziché tentare un path locale non raggiungibile dal server.
Esempi di automazioni marketing con file
- Lead intake da form: webhook multipart/form‑data n8n → Extract From File (XLSX) → dedup con HTTP Request al CRM → scrittura su Google Sheets → Respond To Webhook con JSON e link allo storage.
- Asset creativi: upload immagine → Edit Image (ritaglio/resize) → storage su S3 con naming per campagna → ritorno link in risposta.
- Reportistica: generi un CSV con i risultati della campagna → Convert to File → upload su Drive → link condiviso al team via Slack.
Integrazione con AI: inviare file ad Assistants/Files (panoramica)
Se vuoi alimentare un assistente AI con un file (brief, dataset), puoi:
- ricevere il file via n8n file upload;
- validarlo/parsing;
- inviarlo all’API del provider (OpenAI Files/Assistants) con una chiamata HTTP Request in multipart/form‑data, includendo il binary dell’item;
- salvare l’ID ritornato e proseguire il flusso (per esempio, avviare un job di elaborazione e notificare il team).
Nota: controlla la documentazione del nodo/servizio per i parametri multipart esatti e i limiti dimensione.
Quick Takeaways
- Usa il Webhook Trigger con Binary Property per ricevere file via multipart/form‑data e farli viaggiare nella proprietà binary.
- Per risposte rapide, Respond To Webhook può inviare un JSON immediato; per il download, restituisci link a file su S3/Drive.
- Extract From File è la via semplice per parsing XLSX; normalizza header e usa batching per API esterne.
- Configura CORS, IP whitelist e header segreti per endpoint più sicuri.
- In Docker, monta volumi per poter usare Read/Write Files from Disk; in cloud preferisci sempre storage esterni.
- Per scalare, valuta il binary data mode e — in Enterprise — l’uso di S3 come storage esterno.
- Naming coerente + metadati nel json = riconciliazione e audit più semplici.
Conclusione
Gestire un n8n file upload non è solo “ricevere un allegato”: è orchestrare un flusso affidabile che parte da un form, valida e trasforma i dati, archivia con regole chiare e restituisce un output utile (un JSON, un link scaricabile, una notifica). Come marketer, questa pipeline sblocca attività che prima richiedevano ore: dal caricamento di liste lead e riconciliazione con il CRM, alla distribuzione di report aggiornati, fino a scenari avanzati con AI. Parti dalle basi: Webhook Trigger con multipart/form‑data, proprietà binary coerente, parsing con Extract From File e una risposta chiara via Respond To Webhook. Aggiungi poi uno storage robusto (Amazon S3 o Google Drive) con naming e versioning, e cura la sicurezza con CORS, whitelist e chiavi. Se lavori in Docker o su n8n Desktop, assicurati che i percorsi ai file siano realmente accessibili al runtime. Infine, misura e scala: usa batching, link anziché payload binari in risposta e — se sei self‑hosted — configura il binary data mode. Con questi ingredienti, il tuo primo workflow diventa un asset ripetibile che migliora produttività e qualità dei dati, giorno dopo giorno.
FAQ
1) Come faccio un upload di file su n8n da un form?
- Usa il Webhook Trigger, imposta HTTP Method su POST e definisci la Binary Property (es. file). Invia il form come multipart/form‑data n8n con campo “file”. Nel workflow, il file sarà in item.binary.file.
2) Come gestisco la proprietà binary in n8n tra i nodi?
- Mantieni lo stesso nome di proprietà (es. file) in tutto il workflow. Quando rimappi campi con Edit Fields (Set), abilita Include Binary Data per non perdere l’allegato. Se ti serve convertire, usa Extract From File o Convert to File.
3) Posso restituire un file al chiamante (Webhook Response file download)?
- È più robusto restituire un link (S3 presigned URL o link Drive) nel body JSON della risposta con Respond To Webhook. Per conferma immediata usa responseMode: responseNode con statusCode 200 e Content-Type application/json.
4) Come salvo i file su Amazon S3 con n8n e genero un link?
- Carica il binary sul bucket con un object key coerente. Per il link, usa una presigned URL S3 con n8n (via API o servizio ausiliario) e inviala nel Webhook Response. Parole chiave utili: storage su Amazon S3 con n8n, presigned URL S3 con n8n.
5) Qual è la via più semplice per parsing CSV/XLSX in n8n?
- Per XLSX usa Extract From File → Extract From XLSX, poi normalizza header e invia i dati dove ti servono (CRM, Sheets). Per CSV, converti in JSON e tratta le colonne in modo consistente. Se lavori su desktop/Docker, verifica i percorsi (Read Binary File n8n (Docker/desktop) via nodo Read/Write Files from Disk e volumi montati).
—
Hai trovato utile questa guida? Raccontami con quale file vorresti partire (CSV lead? creatività da validare? report campagne?) e condividila con un collega: potrebbe essere la scintilla per la vostra prossima automazione!
Scopri la consulenza →

