Leggere file locali n8n è uno dei modi più rapidi per portare nel tuo workflow dati “del mondo reale” come CSV, Excel o PDF presenti sul tuo computer o sul server dove gira n8n. Per un marketer, significa sbloccare automazioni come import massivi di lead, arricchimento dati da esportazioni CRM, generazione di report su file e distribuzione su Slack o email. In questa guida pratica scoprirai come leggere e scrivere file da disco con n8n in modo affidabile, come configurare il trigger su file locali n8n per monitorare cartelle, e come gestire correttamente percorsi host e container in n8n Docker. Ti mostrerò i nodi, i parametri e le opzioni esatte da usare, oltre a strategie per evitare errori comuni su permessi e path.
Cosa imparerai:
- Il nodo corretto per leggere/scrivere file, con parametri e best practice.
- Come montare volumi per accesso ai file in n8n e usare il path giusto nel container.
- Come convertire un file binario in dati JSON lavorabili (CSV/ODS/PDF) e viceversa.
- Un mini caso d’uso end-to-end pensato per marketer.
Pronto a portare nel tuo workflow i file che già usi ogni giorno? Iniziamo.
Panoramica rapida: i nodi giusti per leggere/scrivere file locali
Per come leggere file da disco con n8n, il nodo di riferimento è “Read/Write Files from Disk” (self-hosted soltanto, non disponibile su n8n Cloud). Questo nodo gestisce sia la lettura che la scrittura.
- Operazioni disponibili:
- Read File(s) From Disk: recupera uno o più file dal computer che esegue n8n.
- Write File to Disk: crea/salva un file sul computer che esegue n8n.
Parametri principali (Read):
- File(s) Selector: percorso del file o pattern (supporta glob come , , ?, []). Esempio: /data/in//.csv
- Options:
- File Extension
- File Name
- MIME Type
- Put Output File in Field (campo di output binario)
Parametri principali (Write):
- File Path and Name: percorso completo e nome del file di destinazione (es. /data/out/report.csv)
- Input Binary Field: nome del campo binario in ingresso da scrivere
- Options: Append (per aggiungere a un file esistente)
Nota importante:
- Questo nodo funziona sulla macchina dove gira n8n. Se n8n è in Docker, i percorsi riferiscono il filesystem del container. In generale, n8n raccomanda percorsi assoluti per evitare errori.
Per i formati:
- Per convertire file binari in JSON lavorabile usa “Extract From File” (operazioni come CSV, ODS, PDF, ecc.).
- Per creare un file a partire da JSON o testo, usa “Convert to File”.
[IMG: Ricerca e selezione del nodo “Read/Write Files from Disk” nel canvas di n8n]
Docker e path: come montare volumi e usare i percorsi corretti
Se usi n8n in Docker, i path nei nodi sono quelli interni al container, non quelli dell’host. Ecco il pattern operativo più solido:
1) Monta una cartella host nel container.
- Esempio (Docker run):
docker run -it –rm \
–name n8n \
-p 5678:5678 \
-v /host/data:/data \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
2) Usa il percorso interno nel nodo.
- Se hai montato /host/data su /data, nei parametri del nodo usa /data/in/lead.csv, non /host/data/in/lead.csv.
3) Preferisci percorsi assoluti e cartelle dedicate con permessi chiari.
- Evita spazi nei path o usa cartelle “sanificate” (es. /data/in invece di /Volumes/SSD drive/in).
4) n8n Cloud non supporta la lettura/scrittura su disco locale.
- Questa funzionalità è disponibile solo in self-hosting.
Suggerimento pratico per marketer:
- Crea una struttura semplice: /data/in per i file in ingresso, /data/out per i risultati, /data/archive per l’archiviazione post-processo. Così i tuoi workflow restano leggibili e manutenibili.
[IMG: Esempio di volume mount Docker e mappa concettuale dell’uso dei path interni nel container]
Trigger su file locali: monitorare cartelle e reagire ai cambiamenti
Per avviare un workflow quando un file viene aggiunto, modificato o eliminato, usa il nodo “Local File Trigger” (self-hosted soltanto).
Concetti chiave:
- Trigger On: seleziona l’evento da osservare (creazione/modifica/cancellazione).
- Changes to a Specific File: inserisci il percorso nel campo File to Watch per un singolo file.
- Changes Involving a Specific Folder: controlla un’intera cartella.
- Options: puoi includere o escludere file/cartelle con pattern di ignore (es. /temp/, */.tmp).
Esempio rapido:
- Obiettivo: rilevare nuovi CSV in /data/in e avviare l’elaborazione.
- Local File Trigger:
- Trigger On: Add
- Folder to Watch: /data/in
- Options > Ignore: */.tmp, */~$
- Read/Write Files from Disk (Read):
- File(s) Selector: /data/in/*.csv
- Extract From File:
- Operation: CSV
- Input Binary Field: data (default)
[IMG: Configurazione del Local File Trigger per cartella /data/in con ignore pattern]
Vantaggio per marketer:
- Puoi “buttare” un file CSV nella cartella condivisa (es. un export dal CRM) e far partire automaticamente le tue automazioni: import, enrichment, notifiche Slack, aggiornamento fogli di calcolo.
Dal file ai dati: estrarre CSV/Excel/PDF in JSON lavorabile
Spesso i file sono “binari” e vanno trasformati in JSON per poterli manipolare. Usa “Extract From File” per convertire CSV/ODS/PDF/HTML/JSON binario in dati strutturati.
Parametri utili:
- Operation: seleziona il formato sorgente (es. CSV, ODS, PDF).
- Input Binary Field: nome del campo binario di ingresso (di default spesso “data”).
- Destination Output Field: nome della proprietà di output dove scrivere i dati estratti (quando disponibile).
Esempio step-by-step (CSV import):
1) Local File Trigger: rileva un nuovo file in /data/in.
2) Read/Write Files from Disk (Read):
- File(s) Selector: /data/in/*.csv
- Options > Put Output File in Field: data
3) Extract From File: - Operation: CSV
- Input Binary Field: data
4) Continua con Set/IF/HTTP Request per arricchimenti e routing.
Snippet JSON (estratto dei nodi chiave):
-
Read (usa fileSelector):
{
“parameters”: {
“fileSelector”: “/data/in/*.csv”,
“options”: {
“putOutputFileInField”: “data”
}
},
“name”: “Read/Write Files from Disk”,
“type”: “n8n-nodes-base.readWriteFile”,
“typeVersion”: 1
} -
Extract (CSV):
{
“parameters”: {
“operation”: “csv”,
“options”: {}
},
“name”: “Extract From File”,
“type”: “n8n-nodes-base.extractFromFile”,
“typeVersion”: 1
}
[IMG: Anteprima dell’output JSON dopo “Extract From File” con colonne CSV mappate come campi]
Insight unico:
- Se devi passare il file a un’API, molti servizi accettano un body “file” binario: nel nodo “HTTP Request”, scegli “n8n Binary File” e indica l’Input Data Field Name con il nome del campo (es. data).
Scrivere file su disco: report, export e archiviazione
Quando vuoi salvare risultati su file (report CSV, JSON di log, immagini elaborate), usa l’operazione “Write File to Disk”.
Parametri:
- File Path and Name: percorso completo d’uscita (es. /data/out/report.csv).
- Input Binary Field: campo binario in ingresso da scrivere (se stai convertendo JSON in file prima, usa “Convert to File”).
- Options: Append (true per aggiungere a file esistenti, false per sovrascrivere/creare nuovo).
Esempio: generare un report JSON e salvarlo.
1) Convert to File:
- Converte JSON in file binario (scegli formato e opzioni).
2) Read/Write Files from Disk (Write): - File Path and Name: /data/out/report.json
- Input Binary Field: data
JSON di esempio (write):
{
“parameters”: {
“operation”: “write”,
“fileName”: “/data/out/report.json”,
“options”: {}
},
“name”: “Read/Write Files from Disk”,
“type”: “n8n-nodes-base.readWriteFile”,
“typeVersion”: 1
}
[IMG: Configurazione “Write File to Disk” con percorso assoluto e append disattivato]
Tip per marketer:
- Salva in /data/out e poi usa un nodo “FTP” o “HTTP Request” per inviare il file dove serve (CDN, DAM, drive, API del tuo fornitore).
Permessi, UID/GID e problemi comuni: come evitarli e risolverli
Gli errori più frequenti non dipendono dal nodo, ma dall’ambiente:
-
File non trovato:
-
Path sbagliato (stai usando il percorso host invece del percorso del container).
-
Cartella non montata in Docker o montata su un path diverso da quello usato nel nodo.
-
Soluzione: verifica il mount (-v /host/data:/data) e usa sempre /data/… nel nodo.
-
Permesso negato:
-
L’utente del container non ha permessi sulla cartella montata.
-
Soluzione: assegna permessi di lettura/scrittura alla directory host montata (ad esempio, chown/chmod sulla cartella /host/data). Assicurati che l’utente che esegue n8n nel container possa leggere/scrivere nella directory.
-
Spazi nei nomi:
-
I path con spazi possono creare ambiguità.
-
Soluzione: usa cartelle senza spazi (es. /data/marketing_in) o rinomina le directory.
-
Differenze ambienti (Desktop vs Docker vs server):
-
In ambiente locale (npm) puoi usare path come ~/file.csv.
-
In Docker usa percorsi assoluti interni (es. /tmp o /data) e monta volumi.
-
In Cloud non è disponibile la lettura/scrittura su disco.
-
Code node e filesystem:
-
Il “Code” node non può accedere al filesystem: usa sempre “Read/Write Files from Disk” e “HTTP Request”.
[IMG: Schermata di errore tipico “file not found” con freccia che indica il path errato]
Mini caso d’uso per marketer: import CSV con arricchimento e notifiche
Obiettivo: quando un nuovo file lead.csv arriva nella cartella /data/in, importalo, arricchisci i dati e invia un alert su Slack con il conteggio dei nuovi lead.
Flusso:
1) Local File Trigger
- Trigger On: Add
- Folder to Watch: /data/in
- Options > Ignore: */.tmp
[IMG: Local File Trigger attivo su /data/in]
2) Read/Write Files from Disk (Read)
- File(s) Selector: /data/in/*.csv
- Options > Put Output File in Field: data
[IMG: Config del nodo read con glob pattern *.csv]
3) Extract From File
- Operation: CSV
- Input Binary Field: data
4) Set (mapping campi + normalizzazione)
- Esempio: normalizza email in minuscolo, calcola “source” da colonne UTM.
5) Slack (Send Message)
- Text:
Nuovi lead importati: {{ $json.length || $items().length }} elementi
File: {{ $node[“Read/Write Files from Disk”].json.fileName || “batch” }}
[IMG: Slack node con messaggio dinamico]
Estensioni:
- Salva JSON su disco con Write File to Disk per audit (/data/out/leads_YYYYMMDD.json).
- Sposta il CSV originale in /data/archive con un ulteriore step (copy/move via shell esterna o integrazione storage).
Quick Takeaways
- Usa “Read/Write Files from Disk” per leggere/scrivere file locali; in Docker i path sono interni al container.
- Monta volumi: -v /host/data:/data e usa /data/… nei parametri del nodo.
- “Local File Trigger” avvia i workflow su cambiamenti di file/cartelle; sfrutta gli ignore pattern.
- Converti file in JSON con “Extract From File” (CSV/ODS/PDF) per lavorare i dati.
- “Convert to File” crea file a partire da JSON/testo; poi “Write File to Disk” li salva.
- Evita spazi nei path, usa permessi corretti e percorsi assoluti per ridurre errori.
- Il “Code” node non accede al filesystem: usa i nodi dedicati per file.
Conclusione
Portare i file locali in n8n sblocca una miriade di automazioni utili ai marketer: import batch di CSV, arricchimenti e normalizzazioni, generazione di report e notifiche operative. Il cuore è “Read/Write Files from Disk” con i parametri giusti: File(s) Selector per leggere anche più file con globbing, File Path and Name per scrivere in percorsi assoluti, e l’accoppiata “Extract From File”/“Convert to File” per muoversi in modo fluido tra binario e JSON. Se usi Docker, ricorda che i percorsi sono interni al container: monta una cartella dell’host su /data e usa sempre /data/… nei nodi. Per attivare i flussi all’arrivo di nuovi file, il “Local File Trigger” ti consente di osservare cartelle e reagire in tempo reale con pattern di ignore per mantenere puliti i processi.
Il prossimo passo? Scegli una cartella condivisa, crea una struttura /data/in e /data/out, configura “Local File Trigger” e un flusso Read → Extract → Set → Slack. In pochi minuti avrai una pipeline affidabile che trasforma i tuoi file in insight azionabili, migliorando la tua produttività e la qualità dei dati che alimentano campagne e report.
FAQ
-
Come leggere file da disco con n8n in modo affidabile?
Usa il nodo “Read/Write Files from Disk” con l’operazione “Read File(s) From Disk” e un percorso assoluto nel parametro File(s) Selector. In Docker, monta la cartella host (-v /host/data:/data) e usa /data/… nel nodo. -
Esiste un “nodo Read Binary File in n8n”?
Nelle versioni attuali la lettura è gestita dal nodo “Read/Write Files from Disk” con l’operazione di lettura. Imposta File(s) Selector e, se necessario, Put Output File in Field per nominare il campo binario. -
Come attivo un trigger su file locali n8n?
Usa “Local File Trigger”. Imposta Trigger On (es. Add), indica File to Watch o Folder to Watch e configura gli ignore pattern. È disponibile solo in self-hosting. -
Come gestire percorsi host e container in n8n Docker?
Monta volumi (es. -v /host/data:/data) e usa path interni del container nei nodi. Evita path dell’host. Preferisci percorsi assoluti per ridurre errori. -
Permessi file e UID/GID per n8n: cosa considerare?
Assicurati che l’utente del container abbia lettura/scrittura sulla cartella montata. Se ricevi “Permission denied”, regola i permessi/chown sulla directory dell’host montata. Evita spazi nei path e verifica che la cartella esista.
Hai messo in produzione una pipeline per leggere file locali n8n? Raccontaci il tuo caso d’uso nei commenti: che file importi e qual è il passo più utile per la tua automazione? Se la guida ti è stata utile, condividila con il tuo team per standardizzare i flussi basati su file!
Scopri la consulenza →

