
## 工作流概述
这个n8n工作流演示了一个强大的技术:**如何从工作流中的任何先前节点重新访问二进制数据,即使中间节点删除了它**。这在需要跨多个步骤处理二进制文件(如图像、PDF)时至关重要,特别是当中间节点默认不保留二进制数据时。
## 工作流节点详解
### 1. Start (手动触发器)
– 工作流的起点
– 触发整个流程的执行
### 2. Get n8n Logo (Binary) (HTTP Request节点)
– 从URL获取二进制图像(n8n徽标)
– 这是我们将要处理的二进制数据的来源
### 3. Remove Binary Data (Set节点)
– 模拟二进制数据在流程中”丢失”的常见场景
– 默认情况下,许多n8n节点(如此处的Set节点)不会将二进制数据传递给后续节点
### 4. Re-Access Binary Data from Previous Node (Code节点)
– **核心功能节点**:演示如何从任何先前节点重新访问二进制数据
– 使用`$(previousNodeName).item`获取指定先前节点的完整项目
– 使用`this.helpers.prepareBinaryData()`正确地将二进制数据重新附加到当前项目
## 技术实现细节
### 代码节点工作原理
该Code节点实现了以下关键功能:
1. **指定源节点**:通过`previousNodeName`变量指定要从中获取二进制数据的节点名称
2. **遍历所有项目**:循环处理进入Code节点的每个项目
3. **获取先前节点数据**:使用`$(previousNodeName).item`访问先前节点的完整项目数据
4. **二进制数据处理**:
– 检查先前节点项目是否包含二进制数据
– 确保当前项目有二进制对象来添加文件
– 循环处理二进制对象中的所有键(每个键代表一个文件)
– 使用`this.helpers.prepareBinaryData()`正确准备二进制数据
### 自定义说明
如果将此代码适配到您的工作流中,请记住更新代码中的`previousNodeName`变量,以匹配最初产生您想要检索的二进制数据的节点名称。
## 应用场景
这个技术特别适用于:
– 需要跨多个节点处理文件的自动化流程
– 当中间节点(如Set节点、Function节点)默认不传递二进制数据时
– 图像处理、文件转换、文档处理等工作流
– 需要从早期节点恢复文件数据的复杂自动化
## 使用说明
1. 点击**运行工作流**
2. 观察`Re-Access Binary Data from Previous Node`节点的输出,查看重新附加的二进制数据
3. 根据您的具体需求调整代码中的节点名称引用

评论(0)