还在手动传文件?你的双手值得更高级的玩法
笔者在 N8N大学 社区里潜水时,发现很多同学都有个共同的烦恼:手里有一堆本地文件(比如图片、CSV报表、PDF文档),需要定期上传到某个第三方平台或系统里。操作很简单,就是打开网页,点击上传,选中文件,等待... 周而复始,枯燥且低效。

更痛苦的是,有时候 API 接口还要求你把文件塞进 Multipart/Form-Data 这种格式里传输。对于不懂编程的朋友来说,这简直是天书。别怕,今天笔者就带大家硬核拆解:如何用 n8n 这把瑞士军刀,把本地文件自动上传到第三方 API。
核心概念:什么是 Multipart/Form-Data?
咱们不说教科书定义。你可以把 Multipart/Form-Data 想象成一个“快递包裹”。当你需要寄送一个实体物品(文件)的同时,还要附带一张写着收件人信息的便签(文本参数)。
普通的 HTTP 请求就像是寄信,只能写纯文字。而 Multipart/Form-Data 就像是快递,能把文件(二进制数据)和其他参数(比如文件名、ID)打包在一起发送。绝大多数涉及文件上传的 API,比如钉钉/飞书机器人发文件、OSS 上传、图床接口,都依赖这种格式。
准备工作:硬性条件检查
在开始之前,请确保你手头有以下资源:
- 一个正在运行的 n8n 实例:可以是云端的,也可以是本地搭建的。
- 一个测试用的 API:为了演示,笔者建议使用
https://httpbin.org/post。这是一个专门用来测试 HTTP 请求的网站,它会把你发送的数据原样返回,非常适合调试。 - 一个本地文件:随便找张图片或者文本文档放在桌面上备用。
核心实操:三步搞定文件上传
我们将通过三个核心节点完成这个流程:**读取二进制文件** -> **设置参数** -> **发送 HTTP 请求**。
步骤 1:读取本地文件 (Read Binary File)
首先,我们需要告诉 n8n 去哪里找文件。
- 新建一个 Workflow,添加 Read Binary File 节点。
- 在参数 File Location 中,填入你本地文件的绝对路径。比如 Windows 可能是
C:Users你的用户名Desktoptest.jpg,Mac/Linux 可能是/Users/你的用户名/Desktop/test.jpg。 - 点击 Execute Node 确保节点变绿,这说明 n8n 已经成功读取了二进制数据。
步骤 2:配置 HTTP 请求 (HTTP Request)
这是最关键的一步。很多新手会直接把上一步的二进制数据连到 HTTP 节点,结果报错。正确姿势是手动构建 Multipart。
- 添加 HTTP Request 节点,连接在 Read Binary File 之后。
- Method 选择
POST。 - URL 填入
https://httpbin.org/post。 - 在 Body Content Type 下拉菜单中,务必选择
multipart/form-data。 - 你会看到下方出现了一个 Multipart Form Data 的数组设置。这里就是“打包”的地方。
步骤 3:构建 Multipart 数据 (关键参数)
在 Multipart Form Data 部分,我们需要添加条目:
- 第一条目(文件):
- Parameter Name: 填入 API 文档里要求的文件参数名,通常是
file、upload或binary。这里我们填file。 - Parameter Type: 选择
Binary。 - Binary Property: 这里要填入上一步 Read Binary File 节点输出的字段名,默认是
data。
- Parameter Name: 填入 API 文档里要求的文件参数名,通常是
- 第二条目(如果需要附加参数):
- Parameter Name: 比如
filename。 - Parameter Type: 选择
Text。 - Value: 填入
test.jpg。
- Parameter Name: 比如
设置好后,点击 Execute Workflow。如果看到 HTTP Request 节点变绿,并且返回了 files 对象里包含你的文件数据,恭喜你,你已经掌握了文件上传的精髓!
避坑指南:实战中的拦路虎
虽然流程看起来很简单,但笔者当年也踩过不少坑。这里分享两个最常见的问题:
1. “Binary Property” 填错了:在 Multipart Form Data 设置中,Binary Property 这一栏填写的不是文件路径,而是**上一个节点输出流中的字段名**。如果你在 Read Binary File 里没改名字,默认就是 data。如果你用的是 Read Binary Load 节点,输出可能是 binary。只要这里对不上,API 就会报错说没收到文件。
2. API 的“隐形”要求:有些 API 除了文件,还要求必须传递一个 Content-Type 头在文件 part 里(比如 image/png)。在 n8n 的 Multipart 设置里,你可以添加一个额外的条目,Parameter Name 填 Content-Type,Parameter Type 填 Text,Value 填对应的 MIME 类型。不过大多数情况下,n8n 会自动处理,如果遇到奇葩 API,记得检查这一点。
FAQ 问答
Q1: 为什么我上传后 API 提示 "Invalid File"?
A: 最常见的原因是 Binary Property 字段名填错,或者文件读取节点根本没执行成功(数据流为空)。建议在 HTTP Request 节点前加一个 Set 节点或 No-Op 节点,先把数据打印出来看看。
Q2: Multipart/Form-Data 里的 Parameter Type 什么时候选 Binary,什么时候选 Text?
A: 只要是上传文件本身,必须选 Binary。如果是随文件一起发送的附加信息(如文件名、Token、签名),统一选 Text。
Q3: n8n 可以上传大文件吗?比如 100MB 的视频?
A: 取决于你的 n8n 部署环境。如果你是用 Docker 部署的,默认可能有 2MB 或 16MB 的 Body 限制。你需要修改 Nginx 或 Docker 容器的配置,增加 client_max_body_size。如果是 SaaS 版本,通常有配额限制。
总结与资源
掌握了 Multipart/Form-Data 的处理,你的 n8n 自动化能力就从简单的“数据搬运”升级到了“文件处理”的维度。无论是自动备份截图、批量上传报表,还是构建自己的图床系统,这都是必不可少的一环。
如果你在实操中遇到了具体的报错,欢迎在 N8N大学 社区发帖,笔者会第一时间帮你排查。下期我们聊聊 "如何处理复杂的 JSON 结构解析",敬请期待!