Le nœud Google Drive (operation download, v3) retourne un contenu binaire corrompu

这个报错通常发生在 n8n 里用 Google Drive 节点(download 操作,v3)下载文件、再把二进制数据交给后续节点处理时,表现为元数据(文件名、MIME 类型、大小)正确,但二进制内容损坏、且不同文件返回同一段 9 字节数据。优先排查 n8n 实例的二进制存储模式(N8N_DEFA

快速结论:这个报错通常发生在 n8n 里用 Google Drive 节点(download 操作,v3)下载文件、再把二进制数据交给后续节点处理时,表现为元数据(文件名、MIME 类型、大小)正确,但二进制内容损坏、且不同文件返回同一段 9 字节数据。优先排查 n8n 实例的二进制存储模式(N8N_DEFAULT_BINARY_DATA_MODE)以及文件系统/S3 二进制存储或序列化环节。

适用环境:Issue 中已确认的环境为 n8n Cloud / Docker,n8n 版本 2.42.3,Node.js 26.7.0,环境 production,数据库 SQLite,执行模式 regular,并发 5,License Enterprise / sandbox,二进制数据模式为 filesystem,浏览器为 Windows 上的 Chrome 系浏览器。Issue 正文未提供 Python、CUDA、PyTorch、显卡信息。

最快修复方案:暂无确认的一步修复方案。该 Issue 因未使用英语提交而被关闭,维护者未给出已验证的技术修复或官方 workaround。

注意事项:Issue 中用户提出的根因判断(二进制存储/序列化层、N8N_DEFAULT_BINARY_DATA_MODE 相关)属于推测,官方并未确认;该 Issue 标签为 closed:non-english,关闭原因是语言问题而非已解决,因此不能当作有官方结论的案例引用。

问题场景

用户在 n8n Cloud 实例上运行 Google Drive 文件下载工作流:由 Execute Workflow Trigger 触发,Google Drive 节点执行 File / Download(download 操作,v3),再接一个 Code 节点用 Buffer.from(item.binary.data.data, 'base64') 还原二进制。结果 Google Drive 节点返回的文件元数据(name、MIME type、size)是正确的,但二进制内容损坏,且不同内容、不同大小的文件返回完全相同的 9 字节负载。

报错原文

Le nœud Google Drive (operation download, v3) retourne un contenu binaire corrompu

Bug Report — Corrupted Binary Data During Google Drive Download

// buf.length === 9 although fileSize === 13 B
// hex = 7e295eb32b2d7a6faf

File                | Size reported by node | base64Length | bufLength | hexPreview
test.txt (13 bytes) | 13 B                  | 13           | 9         | 7e295eb32b2d7a6faf
PROMPT_N8N.md       | 64.7 KB               | —            | 9         | 7e295eb32b2d7a6faf
regles_de_devis.csv | —                     | —            | 9         | 7e295eb32b2d7a6faf

原因分析

根据 Issue 正文的观测,元数据(fileSize)由 Google Drive API 正确返回,但二进制负载被截断或替换:13 字节的 test.txt 与约 64.7 KB 的 PROMPT_N8N.md 最终都得到同一段 9 字节数据 7e295eb32b2d7a6faf,且收到的 base64 字符串只有 13 个字符,不是合法的完整 base64 负载。用户据此推测问题出在 n8n 实例的二进制数据处理层,可能是二进制存储或序列化阶段返回了占位符或损坏负载,而非 Google Drive API 响应或工作流处理逻辑的问题。

需要强调:以上属于用户的可能原因推断,Issue 被以 closed:non-english 关闭,官方未确认根因,也未给出结论。

环境排查

  • n8n 版本:Issue 中为 2.42.3,先确认你当前实例版本是否一致。
  • 部署平台:n8n Cloud / Docker,两者二进制存储行为可能不同。
  • Node.js 版本:Issue 中为 26.7.0。
  • 数据库:SQLite;执行模式:regular;并发:5。
  • 二进制存储模式:Issue 中为 filesystem,对应环境变量 N8N_DEFAULT_BINARY_DATA_MODE,重点核对是否与预期一致。
  • 若使用文件系统或 S3 二进制存储,检查存储路径、读写权限与序列化是否正常。
  • 剪枝(pruning)配置:maximum age 168 小时、maximum executions 2500,确认是否与二进制数据被清理或替换相关。
  • Issue 未涉及 Python、CUDA、PyTorch、显卡环境,无需在这些方向排查。

解决步骤

  1. 先按 Issue 的复现方式搭建最小工作流:在 Google Drive 创建内容为 Hello World 的 test.txt,用 Execute Workflow Trigger → Google Drive(File / Download)→ Code 节点读取 item.binary.data.data。
  2. 在 Code 节点打印 Buffer.from(item.binary.data.data, 'base64') 的 length 与 hex,确认是否同样得到长度 9、hex 为 7e295eb32b2d7a6faf 的负载。
  3. 核对实例的 N8N_DEFAULT_BINARY_DATA_MODE 配置,确认当前是 filesystem 还是其他模式,排查是否与二进制存储/序列化异常相关。
  4. 检查实例日志中该次执行的记录,确认 Google Drive 节点从 Drive API 实际收到的二进制负载是否完整。
  5. 逐一排除 Issue 中已测试但无效的变体:默认 Google Drive 节点选项、去掉 googleFileConversion、设置 downloadFile: true,这些在该案例中都返回同一段损坏数据。
  6. 如需替代下载方式,Issue 中用户指出 Google Drive 凭据当时被限制用于 HTTP Request 节点,因此该替代路径受阻;是否有受支持的替代方案,Issue 未给出答案,可优先尝试向 n8n 官方支持确认。
  7. 由于原 Issue 因语言问题被关闭,若问题仍存在,建议用英文重新提交 Issue,附上上述测量数据与环境信息。

验证方法

用 Hello World(13 字节)的测试文件跑一遍最小工作流:正确情况下 Buffer.from(..., 'base64') 的长度应为 13,hex 应为 48656c6c6f20576f726c64;若仍返回长度 9、hex 为 7e295eb32b2d7a6faf,说明问题依然存在。再换一个内容与大小都明显不同的文件(例如几十 KB 的 Markdown 或 CSV)重复验证,正常情况两文件的 buffer 长度与 hex 应随内容变化,而不是完全一致。

参考来源

n8n-io/n8n #40405

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 27826

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注