文件打包发送:使用 Compression 节点创建 ZIP 压缩包与解压操作

2026-01-24 12 0

还在手动压缩文件?你的工作流该“瘦身”了

笔者见过太多朋友每天在电脑前做着重复劳动:把一堆报告拖进文件夹,右键,压缩,命名,再上传到某个地方。有时候文件多了,漏掉一两个是常事,还得时刻担心是不是忘了打包。这种机械的“体力活”,不仅消耗精力,更是对专业能力的浪费。

在 N8N大学,我们信奉一个原则:凡是重复的,就应该交给机器。今天,笔者就带大家彻底搞定 n8n 中的文件压缩与解压问题。无论你是要每天打包日志发给团队,还是解压上传的报表进行分析,掌握 Compression 节点,就是你自动化进阶的第一步。

核心武器:Compression 节点初探

n8n 的 Compression 节点就像一个万能的压缩/解压工具箱,它原生支持 ZIP 和 GZIP 格式。它不仅能处理普通的文件,还能直接处理二进制数据流(Binary Data),这意味着你可以把 API 下载的内容直接打包,中间完全不需要落地保存。

虽然标题主要讲压缩,但笔者必须提醒大家,解压操作在日常自动化中同样重要。比如用户上传了一个压缩包,你需要解压里面的 CSV 进行数据清洗,这时候 Compression 节点的 “Unzip” 模式就派上用场了。

实战一:创建 ZIP 压缩包(从文件到二进制)

这是最常见的场景:把几个文件打包成 ZIP,然后通过邮件或即时通讯工具发送出去。

第一步:准备文件源

通常,文件可能来自 Google DriveS3 或者本地的 Read Binary File 节点。假设我们已经获取到了 3 个文件的二进制数据。在 n8n 中,为了方便后续处理,建议使用 Set 节点将这些文件数据归类,例如设置 `file1`, `file2` 这样的字段名。

第二步:配置 Compression 节点

拖入 Compression 节点,模式选择 ZIP。这是最关键的一步:

  • Operation: 选择 Compress(压缩)。
  • Binary Data: 设为 True。因为我们处理的是文件流。
  • File Name: 输入你想要的压缩包名称,例如 Daily_Report.zip
  • Options -> Files: 这里是一个数组。你需要输入类似 [{"fileName": "report_a.pdf", "data": "{{$binary.[你的字段名]}}"}] 的格式。注意,这里的 data 必须引用具体的二进制数据路径。

配置完成后,点击执行,节点就会输出一个名为 Daily_Report.zip 的二进制文件。

第三步:发送压缩包

现在,你可以把输出的二进制数据直接喂给 TelegramSlack 的发送文件节点,或者 Email 节点作为附件发送。

实战二:解压 ZIP 包(数据清洗前置)

假设你有一个工作流,用户通过 Webhook 上传了一个包含多个 Excel 表格的 ZIP 包,你需要提取里面的表格并写入数据库。

操作逻辑非常简单:

  1. 接收文件:使用 Webhook 节点接收二进制文件。
  2. 解压:使用 Compression 节点,模式设为 UNZIP
  3. 输出:节点会自动将 ZIP 包内的所有文件解析出来,输出一个多条目的数据流。

你可以直接在后面连接 Spreadsheet File 节点,利用 n8n 的“批量处理”(Split Out)功能,一次性将所有解压出来的 Excel 文件转换为 JSON 数据。

避坑指南:笔者亲测的两个“拦路虎”

虽然 Compression 节点很强大,但在实际项目中,笔者踩过两个坑,分享给大家:

1. 内存溢出(Out of Memory)

如果你尝试压缩一个几个 G 的超大文件,或者一次性压缩几千个小文件,n8n(尤其是 Docker 部署的)可能会直接报内存错误。这是因为 n8n 处理二进制数据时会占用大量内存。
解决方案:尽量避免在 n8n 内部处理超大文件。对于超大文件,建议使用命令行工具(如 Rclone 或直接在服务器上写脚本)处理,n8n 只负责调度。

2. 文件名乱码或路径丢失

在解压某些在 Windows 上生成的 ZIP 包时,偶尔会出现中文文件名乱码。
解决方案:Compression 节点本身对编码的控制有限。如果遇到这种情况,通常是因为源文件的编码格式不标准。最好的习惯是:在文件源头(生成文件时)就统一使用 UTF-8 编码命名。

FAQ 问答

Q1: Compression 节点支持 7z 或 RAR 格式吗?

A: 不支持。 目前 n8n 的 Compression 节点仅原生支持 ZIP 和 GZIP 格式。如果你的业务必须处理 RAR 或 7z,你可能需要通过 SSH 节点连接服务器执行命令行工具,或者寻找支持这些格式的第三方 API 节点。

Q2: 我可以直接压缩文件夹吗?

A: 间接支持。 Compression 节点是基于文件流的。如果你需要压缩文件夹,通常需要先遍历该文件夹下的所有文件(使用 Google Drive List 或 HTTP Request 获取列表),然后将这些文件的数据放入一个数组中,再传给 Compression 节点进行打包。

Q3: 压缩后的文件存放在哪里?

A: 内存中。 默认情况下,压缩包只存在于当前工作流运行的内存里。如果你需要永久保存,必须在 Compression 节点后添加 Google DriveWrite Binary FileS3 节点将其落地保存。

总结与资源

文件打包与解压是自动化流程中连接“外部数据”与“内部处理”的重要桥梁。Compression 节点虽然配置简单,但蕴含着处理二进制数据的强大能力。

如果你想学习更多关于 n8n 处理文件的高级技巧,欢迎关注 N8N大学(n8ndx.com)。在这里,我们不讲空话,只分享最硬核的实战经验。

相关文章

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

发布评论