n8n HTTP Request节点上传文件教程:从本地文件到API调用的完整流程解析

2026-02-02 13 0

为什么你的文件上传总是卡在第一步?

在 N8N 大学的社群里,我见过太多人被“文件上传”这个需求难住了。你可能已经写好了复杂的自动化流程,却在处理本地文件时发现:HTTP Request 节点默认只能发送文本数据,根本不知道怎么把一张图片或一份 PDF 塞进 API 的参数里。

手动上传再调用 API?这违背了自动化的初衷。笔者今天就带你硬核拆解这个过程,从本地文件到 API 调用,打通这最后一公里。

准备工作:你需要这些“弹药”

在动手之前,请确保你的环境已经就绪:

  1. n8n 实例:无论是云端版还是本地 Docker 部署均可。
  2. 一个支持文件上传的 API:为了演示,本文将使用一个通用的文件上传接口(你可以替换为阿里云 OSS、钉钉群机器人或任何支持 multipart/form-data 的 API)。
  3. 待上传的文件:准备一张图片或一个 PDF 文件放在本地。

核心实操:3 步搞定文件上传

很多新手习惯直接在 HTTP Request 节点里拖拽文件,这是错误的。标准的流程是:读取文件 -> 组装数据 -> 发送请求。

步骤 1:使用 Read Binary File 节点读取文件

首先,我们需要将本地文件转换为二进制数据流。

  • 添加一个 Read Binary File 节点。
  • File Location:填写文件的绝对路径(例如:C:UsersNameDocumentsavatar.jpg/home/user/data/avatar.jpg)。
  • 运行一次该节点,你会看到输出数据中包含了一个二进制数据块(Binary Data)。这是上传成功的关键基础。

步骤 2:配置 HTTP Request 节点(关键参数)

这是最容易出错的地方。添加一个 HTTP Request 节点,并按照以下逻辑配置:

  1. Method:选择 POST(大多数上传接口都用 POST)。
  2. URL:填写目标 API 的地址。
  3. Authentication:如果 API 需要 Token 或 Basic Auth,在这里配置。
  4. Body Content Type:**这里必须选择 multipart/form-data**。这是文件上传的标准格式,千万别选 JSON。
  5. Form Data:点击“Add Field”。
    • Name:填写 API 文档中要求的文件参数名,通常是 fileuploadmedia
    • Parameter Type:选择 Binary(因为我们要传的是二进制流,不是文本)。
    • Binary Property:输入 data(这是上一步 Read Binary File 节点默认输出的二进制属性名)。

注意: 如果 API 还需要传递其他文本参数(如 userId),请继续添加字段,但记得将 Parameter Type 选为 Text

步骤 3:测试与验证

连接 Read Binary File 的输出到 HTTP Request,点击执行。查看 HTTP Request 的输出结果。

  • 如果返回 200 OK 或包含文件 URL 的 JSON,恭喜你,上传成功!
  • 如果报错,通常是因为 Form Data 的字段名(Name)或参数类型(Parameter Type)设置错误。

避坑指南:笔者踩过的坑

在 N8N 大学的实战教学中,这两个坑出现频率最高:

1. 二进制属性名称不匹配
HTTP Request 节点中的 Binary Property 必须严格对应上游节点输出的二进制属性名。默认情况下,Read Binary File 输出的是 data。但如果你使用了 Set 节点修改过数据流,属性名可能会变。务必在“Input”面板查看前一个节点的输出结构。

2. API 的 Content-Type 陷阱
有些老旧或非标准的 API 虽然要求上传文件,却固执地要求 application/json。这种情况下,你无法直接使用 HTTP Request 上传文件。解决方案是先用 HTTP Request 获取上传凭证(如 OSS 的 Policy 和 Signature),再通过 n8n 的 Code 节点或外部脚本完成上传。遇到这种情况,先检查 API 文档的 Content-Type 定义。

FAQ 问答

Q1:我想上传整个文件夹里的所有文件,该怎么做?

A:n8n 原生节点不支持直接上传文件夹。你需要使用 Read Binary File 节点配合 Split Out 节点,或者编写一段简单的 JavaScript 代码(Code 节点)来遍历文件夹路径并将文件推入数组,最后通过循环(Loop Over)依次上传。

Q2:为什么我上传的文件在服务器端显示为 0KB?

A:这通常是因为 Form Data 中的 Parameter Type 错误地选择了 Text 而不是 Binary。请检查并修正该字段的设置。

Q3:HTTP Request 节点支持断点续传吗?

A:不支持。n8n 的 HTTP Request 节点是基于单次请求的。如果你需要上传超大文件(如 >100MB),建议配置 n8n 的环境变量(如 N8N_PAYLOAD_SIZE_LIMIT)来增加允许的负载大小,或者分片上传(这需要更复杂的逻辑,通常在 Code 节点中实现)。

总结与资源

掌握了 Read Binary FileHTTP Request (multipart/form-data) 的配合,你就打通了本地数据与云端交互的任督二脉。这不仅适用于文件上传,也是后续处理图片识别、OCR 等高级功能的基础。

如果你在实操中遇到具体的报错信息,欢迎在 N8N 大学(n8ndx.com)的评论区留言,笔者会亲自为你调试。

相关文章

n8n Error Handling 节点报错太心烦?试试这些更灵活的替代方案
n8n 节点报错了?用 Error Handling 让它自动重试并通知你
n8n Wait节点在数据同步中的延迟控制实战
n8n Wait节点免费版:我能用它实现定时任务吗?
n8n Error Handling节点:当自动化流程“翻车”时,如何让它自动“扶起来”?
n8n Error Handling节点报错常见问题解决

发布评论