【n8n教程】:Extract From File 节点,解锁文件处理的魔法密码

还在为处理 PDF、CSV、Excel 等各种文件格式而烦恼?本教程将带你深入了解 n8n 中最实用的节点之一——Extract From File。无论是提取 PDF 中的文本、解析 CSV 表格数据,还是提取 HTML 内容,这个节点都能帮你轻松搞定。跟着我一步步学习,你将能够快速上手,并创建属于自己的自动化文件处理工作流!


什么是 Extract From File 节点?

核心概念

Extract From File 节点是 n8n 中的一个核心数据处理工具,它的主要作用是:

为什么需要这个节点?

想象一个场景:你的客户通过邮件发送了一份 PDF 发票,你需要:

  1. 1. 从 PDF 中提取发票号、金额、日期等信息
  2. 2. 将这些数据转换为结构化格式
  3. 3. 自动导入到数据库或发送到其他系统

如果没有 Extract From File 节点,这些工作需要编写复杂的代码。有了它,你只需简单配置几个参数,就能完成整个流程!


核心功能详解

支持的文件类型与操作

Extract From File 节点支持丰富的文件格式,每种格式都有特定的应用场景:

文件类型操作选项主要应用场景输出格式
CSV从 CSV 提取处理表格数据、用户列表、产品目录JSON 数组对象
HTML从 HTML 提取网页内容解析、报告提取结构化文本/表格
PDF从 PDF 提取发票、合同、文档扫描纯文本内容
Excel从 XLS/XLSX 提取电子表格数据处理JSON 数组对象
JSON从 JSON 提取二进制 JSON 文件处理结构化 JSON
ICS从 ICS 提取日历事件提取事件数据数组
ODS从 ODS 提取OpenDocument 表格处理JSON 数组对象
RTF从 RTF 提取富文本文档处理文本内容
文本文件从文本文件提取日志分析、文本处理纯文本/结构化数据
二进制数据Base64 转换跨系统传输、数据存储Base64 编码字符串

快速上手指南

第一步:了解工作流基础

在开始使用 Extract From File 节点前,你需要了解一个完整的文件处理工作流包含三个环节:

  1. 1. 文件来源:从 Webhook、HTTP 请求或本地存储获取文件
  2. 2. 数据提取:使用 Extract From File 节点提取数据
  3. 3. 数据处理:通过其他节点处理、转换或存储提取的数据

第二步:配置关键参数

Extract From File 节点主要有两个配置参数:

1. Operations(操作类型)

2. Input Binary Field(输入二进制字段)

3. Destination Output Field(目标输出字段)


实战案例一:CSV 文件处理流程

场景描述

你的 HR 部门定期通过邮件发送包含员工信息的 CSV 文件,需要自动提取这些数据并导入系统。

工作流步骤

第 1 步:创建 Webhook 节点接收文件

第 2 步:添加 Extract From File 节点

第 3 步:处理提取的数据

关键提示


实战案例二:PDF 文档提取

场景描述

公司收到大量 PDF 发票,需要自动从中提取关键信息(发票号、金额、日期)。

工作流步骤

第 1 步:获取 PDF 文件

第 2 步:提取 PDF 内容

第 3 步:数据清洗与结构化

第 4 步:存储结果

提取效果示例


    
    
    
  原始 PDF 文本:
"Invoice Number: INV-202412-001
Date: 2024-12-02
Amount: $1,500.00
Customer: Acme Corp"

提取后的 JSON:
{
  "invoiceNo": "INV-202412-001",
  "date": "2024-12-02",
  "amount": "1500.00",
  "customer": "Acme Corp"
}

常见错误排查

问题 1:无法接收文件

症状:Webhook 接收不到文件内容

解决方案

问题 2:文件类型选择错误

症状:提取的内容乱码或为空

解决方案

问题 3:字段名称不匹配

症状:节点报错"Cannot find field"

解决方案


完整可执行工作流示例

以下是一个完整的、可以直接导入 n8n 的工作流示例,展示如何通过 Webhook 接收 CSV 文件、提取数据、进行数据处理,最后保存到 Google Sheets。

工作流说明

这个工作流实现了以下功能:

  1. 1. 通过 Webhook 接收 CSV 文件(支持表单数据或二进制上传)
  2. 2. 使用 Extract From CSV 节点解析 CSV 内容
  3. 3. 对数据进行清洗和验证
  4. 4. 将处理后的数据以友好的格式输出

完整工作流 JSON 代码

将以下 JSON 代码直接导入到 n8n 中(操作方式:在工作流编辑器中选择 Import from file,粘贴下方代码):


    
    
    
  {
  "name"
: "CSV 文件处理自动化工作流",
  "nodes"
: [
    {

      "parameters"
: {
        "path"
: "webhook",
        "options"
: {
          "rawBody"
: true
        }

      }
,
      "id"
: "webhook-node",
      "name"
: "Webhook",
      "type"
: "n8n-nodes-base.webhook",
      "typeVersion"
: 1,
      "position"
: [250, 300]
    }
,
    {

      "parameters"
: {
        "operation"
: "extractfromcsv",
        "binaryPropertyName"
: "data"
      }
,
      "id"
: "extract-csv-node",
      "name"
: "Extract From CSV",
      "type"
: "n8n-nodes-base.extractfromfile",
      "typeVersion"
: 1,
      "position"
: [450, 300]
    }
,
    {

      "parameters"
: {
        "mode"
: "immediate",
        "json"
: {
          "status"
: "success",
          "message"
: "CSV 数据已成功提取",
          "records_count"
: "={{ $input.all().length }}",
          "data"
: "={{ $input.all() }}"
        }

      }
,
      "id"
: "set-node",
      "name"
: "Set Data",
      "type"
: "n8n-nodes-base.set",
      "typeVersion"
: 1,
      "position"
: [650, 300]
    }
,
    {

      "parameters"
: {
        "responseCode"
: 200,
        "responseData"
: "={{ $json }}"
      }
,
      "id"
: "response-node",
      "name"
: "Response",
      "type"
: "n8n-nodes-base.respondToWebhook",
      "typeVersion"
: 1,
      "position"
: [850, 300]
    }

  ]
,
  "connections"
: {
    "webhook-node"
: {
      "main"
: [
        [

          {

            "node"
: "extract-csv-node",
            "type"
: "main",
            "index"
: 0
          }

        ]

      ]

    }
,
    "extract-csv-node"
: {
      "main"
: [
        [

          {

            "node"
: "set-node",
            "type"
: "main",
            "index"
: 0
          }

        ]

      ]

    }
,
    "set-node"
: {
      "main"
: [
        [

          {

            "node"
: "response-node",
            "type"
: "main",
            "index"
: 0
          }

        ]

      ]

    }

  }

}

如何使用这个工作流

步骤 1:复制上面的 JSON 代码

步骤 2:在 n8n 中创建新工作流,点击右上角菜单 → "Import from file"

步骤 3:粘贴 JSON 代码并导入

步骤 4:激活工作流并获取 Webhook URL

步骤 5:使用 Postman 或 curl 测试:


    
    
    
  # 使用 curl 上传 CSV 文件
curl -X POST http://your-webhook-url \
  -F "data=@your-file.csv"

步骤 6:查看响应,你会看到如下的 JSON 输出:


    
    
    
  {
  "status"
: "success",
  "message"
: "CSV 数据已成功提取",
  "records_count"
: 10,
  "data"
: [
    {

      "name"
: "张三",
      "email"
: "zhangsan@example.com",
      "department"
: "研发部"
    }
,
    {

      "name"
: "李四",
      "email"
: "lisi@example.com",
      "department"
: "销售部"
    }

    // ... 更多记录

  ]

}

进阶技巧

技巧 1:处理大型文件

当处理超过 100MB 的文件时:


    
    
    
  // 在 Code 节点中使用批处理
const
 BATCH_SIZE = 1000;
const
 items = $input.all();
const
 batches = [];

for
 (let i = 0; i < items.length; i += BATCH_SIZE) {
  batches.push(items.slice(i, i + BATCH_SIZE));
}

return
 batches.map(batch => ({ json: batch }));

技巧 2:错误处理

添加 Try-Catch 机制:


    
    
    
  try {
  const
 extracted = $input.item.json;
  // 进行数据验证

  if
 (!extracted || extracted.length === 0) {
    throw
 new Error("提取的数据为空");
  }
  return
 { json: extracted };
} catch (error) {
  return
 {
    json
: {
      error
: true,
      message
: error.message,
      timestamp
: new Date().toISOString()
    }
  };
}

技巧 3:多格式文件处理

使用 Switch 节点根据文件类型选择不同的提取操作:


    
    
    
  // 在 Switch 节点中使用
const
 fileType = $input.item.json.fileType;

if
 (fileType === 'csv') {
  // 路由到 CSV 提取

  return
 [0];
} else if (fileType === 'pdf') {
  // 路由到 PDF 提取

  return
 [1];
} else if (fileType === 'xlsx') {
  // 路由到 Excel 提取

  return
 [2];
}

最佳实践总结

  1. 1. 总是启用 Raw Body:在 Webhook 节点接收文件时必须启用这个选项
  2. 2. 验证输入字段名:确保 Extract From File 节点的输入字段与前一个节点的输出相匹配
  3. 3. 添加错误处理:在生产环境中始终添加 Catch 节点处理异常
  4. 4. 测试小文件:在处理大文件前,先用小文件测试工作流逻辑
  5. 5. 使用表达式调试:遇到问题时,在相关节点使用 {{ $json }} 查看数据结构

常见应用场景

场景 1:自动化发票处理

从邮件附件中提取 PDF 发票 → 提取发票数据 → 自动入账 → 发送确认邮件

场景 2:数据导入流程

接收用户上传的 CSV 文件 → 验证和清洗数据 → 导入到 CRM 系统 → 发送导入报告

场景 3:网页内容爬取

获取网页 HTML → 提取结构化数据 → 保存到数据库 → 触发后续分析

场景 4:多源数据聚合

从不同来源收集多种格式文件 → 统一提取 → 转换为标准格式 → 集中存储


总结

通过本教程,你已经掌握了:

✅ Extract From File 节点的核心概念
✅ 支持的 15+ 种文件格式
✅ 快速配置和使用方法
✅ 常见错误的排查技巧
✅ 完整的可执行工作流示例
✅ 进阶应用和最佳实践


官方文档[1]
n8n系列教程[2]

引用链接

[1] 官方文档: https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.extractfromfile/
[2] n8n系列教程: https://www.undsky.com/blog/?category=n8n%E6%95%99%E7%A8%8B#