![[BUG] cannot upsert files via api](https://www.chat-gpts.plus/wp-content/uploads/2026/06/3897-373e89d2.jpg)
[BUG] cannot upsert files via api
快速结论:调用 Flowise RAG API upsert 文件时返回 {'numAdded': 0, 'addedDocs': []},表明 API 接收了请求但未正确处理文件写入。优先排查是否在 Chatflow 节点的配置中启用了 Override 功能,并在 API 请求中显式传递 files 参数。
问题场景
用户使用 Flowise 搭建了一个 RAG Flow,包含 PDF 文件上传、文本分割、向量化及 Postgres 向量数据库节点。目标是通过 Python 的 requests.post 方法调用 Flowise 的 Prediction API,将本地 PDF 文件 upsert 到 Chatflow 中。但 API 返回成功(HTTP 200)且返回 {'numAdded': 0, 'addedDocs': []},即文件未被真正添加。后续的 Q&A 预测也无法读取该文件内容。用户通过 UI 界面手动 upsert 文件可以正常工作。
报错原文
Success: {'numAdded': 0, 'addedDocs': []}
原因分析
根据 Issue 讨论,最可能的原因是用户在 Chatflow 配置中 没有启用 Override 功能,或者虽然开启了 Override 但未在 API 请求中正确传递 files 参数。当不启用 Override 时,API 请求中的 files 参数会被忽略,Flowise 会尝试重复 upsert 已存在于 “PDF File” 节点中的文件(而非用户通过 API 传入的新文件),因此返回 numAdded: 0。如果已启用 Override,则可能是权限或配置错误。
另一个可能原因是用户使用的 Flowise 版本(2.2.4)存在此问题的 Bug。Issue 中已有人提交了修复 PR(#3932),因此可能是软件缺陷导致。
环境排查
- 确认 Flowise 版本(Issue 中为 2.2.4)。
- 确认安装方式(Docker / 源码 / npm)。
- 确认数据库类型(Postgres)及其文件上传功能是否在 Flowise 设置中启用。
- 确认 Chatflow 中 “PDF File” 节点是否已连接文件,并且文件中已有内容(UI 端 upsert 正常可作为参照)。
- 确认 API 请求的 URL 正确,且已包含
/api/v1/prediction/路径(非仅 Chatflow ID)。
解决步骤
- 在 Flowise 界面中检查 Chatflow 节点的 Override 配置:
- 在 Chatflow 画布上,点击你想要通过 API upsert 文件的节点(通常是最末端的节点,如 “Conversation Chain” 或 “Prediction” 节点)。
- 在右侧配置面板中,找到 Override 选项卡,确保
files参数被勾选为可覆盖。如有需要,也可以同时勾选metadata等其他参数。 - 保存 Chatflow 并重新部署。
- 修改 API 请求方式:
- 确保 API 请求使用
multipart/form-data格式,并且files字段的名称与 Flowise 期望的一致(通常是 “files”)。 - 在
data参数中,可以传入chunkSize、chunkOverlap等分割参数,但这些必须与 Chatflow 节点的配置相匹配。 - 示例 Python 代码(参照 Issue 用户代码已基本正确,但需确认 URL 格式):
import requests url = "http://your-flowise-instance:port/api/v1/prediction/your-chatflow-id" files = {"files": ("example.pdf", open("example.pdf", "rb"))} data = { "chunkSize": "512", "chunkOverlap": "100" } response = requests.post(url, files=files, data=data) print(response.json()) - 确保 API 请求使用
- 检查 Flowise 的 Analytics 日志(如果已开启):
- 参考文档启用 Analytics:Flowise Analytics,查看是否有更详细的错误日志输出。
- 尝试使用 Postman 模拟请求:
- 参考 Issue 中的截图,确保在 Postman 的 Body 中选择 “form-data”,key 名称为 “files”,类型为 File,value 选择本地的 PDF 文件。
- 同时检查是否遗漏了其他必须的参数(如 Chatflow 的 metadata)。
- 如果上述步骤均无效,考虑升级 Flowise 版本:
- 由于 Bug 已在后续 PR 中修复,可以尝试升级到 2.2.4 之后的版本(例如 2.2.5 或更高),或者等待官方发布修复版本。
验证方法
重新执行 API upsert 请求,检查返回 JSON 中的 numAdded 值是否大于 0,以及 addedDocs 是否包含新增文档的 ID。然后使用相同的 Chatflow 发起 Q&A 预测请求,确认新上传的文件内容能被检索到并返回正确答案。



