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.

📚 Nuovo a n8n? Parti dalla guida completa: cos'è n8n e come funziona.

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!

Vuoi automazioni AI su misura per la tua azienda?
Scopri la consulenza →