issue: file[‘path’] field not set when attaching old files

用户使用 Open WebUI(Docker 安装,v0.9.6,Ubuntu)时,在同一聊天会话中:

issue: file['path'] field not set when attaching old files

issue: file[‘path’] field not set when attaching old files

快速结论:该问题发生在 Open WebUI v0.9.6 中,当用户在聊天中通过“attach file”(附件按钮)附加一个之前通过知识库上传过的文件时,file['path'] 字段可能缺失,导致前后端数据处理不一致。优先排查附件加载时的数据格式化路径是否统一使用了 FileModel/FilesTable 类。

问题场景

用户使用 Open WebUI(Docker 安装,v0.9.6,Ubuntu)时,在同一聊天会话中:

  • 直接通过“上传文件”按钮上传文件,file['file']['path'] 正常设置。
  • 通过“attach knowledge”从知识库附加文件,file['path'] 正常设置。
  • 通过“attach file”(普通附件按钮)附加同一个已存在于知识库中的文件,file['path'] 字段缺失。

用户检查 __metadata__['files'] 中的数据时发现该字段不完整。

报错原文


# 通过 attach knowledge 时 file['path'] 存在
{
    'type': 'file',
    'name': 'dasdasdas.txt',
    'id': '1f019f11-fdcd-4074-9294-40f4a4ca67fb',
    ...
    'path': '/app/backend/data/uploads/1f019f11-fdcd-4074-9294-40f4a4ca67fb_dasdasdas.txt',
    'status': 'processed'
}

# 通过 attach file 时,数据对象中完全没有 'path' 字段
{
    'id': '1f019f11-fdcd-4074-9294-40f4a4ca67fb',
    'user_id': '7c6ccdc9-5015-4a22-9154-292f1bd6a50e',
    'hash': '5fd924625f6ab16a19cc9807c7c506ae1813490e4ba675f843d5a10e0baacdb8',
    'filename': 'dasdasdas.txt',
    'data': {
        'status': 'completed',
        'content': 'asdasd'
    },
    'meta': { ... },
    # 注意: 这里没有 path 字段
}

原因分析

可能的根本原因是“attach file”(普通附件)与“attach knowledge”(知识库附件)使用了不同的数据格式化路径。

  • “attach knowledge” 路径可能调用了统一的 FileModel/FilesTable 数据处理,正确补充了 path 字段。
  • “attach file” 路径可能直接使用了原始的数据库查询结果或 API 响应,未经过 FileModel 类标准化,导致 path 字段在特定场景下丢失。

Issue 的评论者(提议者)表示已通过 完全改用内部的 FileModel/FilesTable 类 来消除不同数据格式化路径的差异,这被视为修复方向。

环境排查

  • 确认 Open WebUI 版本是否为 v0.9.6 或更早(问题在 v0.9.6 中被报告)。
  • 确认 Docker 安装方式及后端数据卷挂载路径(如 /app/backend/data/uploads/)。
  • 确认是否同时使用了知识库(Knowledge Base)功能与普通文件上传功能。
  • 检查浏览器控制台日志(Console Logs)和 Docker 容器日志,看是否有相关错误。

解决步骤

  1. 升级:建议优先尝试升级到最新版本(问题报告在 v0.9.6,后续版本可能已修复),使用 docker pull ghcr.io/open-webui/open-webui:latest 拉取最新镜像并重启容器。
  2. 检查代码改动:如果手头有源码或自定义开发,请确认后端在“attach file”的 API 端点中是否调用了 FileModel/FilesTable 类进行数据格式化。确保所有文件附件路径都经过统一的模型类处理。
  3. 可优先尝试:如果无法升级,可手动检查后端代码中处理“attach file”请求的函数,查找是否遗漏了 file['path'] 字段的赋值逻辑,参考 相关 Issue #26222 中关于知识库文件附加 API 行为的讨论,确保文件 ID 到路径映射的逻辑一致。
  4. 验证数据流:在“attach file”操作后,检查 __metadata__['files'] 中的对象结构是否与“attach knowledge”的对象结构一致(例如是否包含 typepath 等字段)。

验证方法

执行以下步骤确认修复:

  1. 重新上传一个文件到知识库。
  2. 在同一个或新的聊天中,点击“attach file”(普通附件按钮),选择该已存在的文件。
  3. 在浏览器开发者工具或日志中检查 __metadata__['files'] 对象,确认 file['path'] 字段存在且指向正确的文件路径(如 /app/backend/data/uploads/...)。
  4. 对比“upload files”和“attach knowledge”的行为,确保三者返回的 path 字段均一致且完整。

参考来源

open-webui/open-webui #26260 issue: file[‘path’] field not set when attaching old files

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 10239

发表回复

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