issue: the background image chosen while creating a folder from the sidebar is discarded

在 Open WebUI 中通过侧边栏“Folders”下的“New Folder”按钮创建文件夹时,即使已在“Folder Background Image”里选好图片,创建出的文件夹背景仍为默认,重新打开编辑对话框时图片选择器又变回“Upload”。这是侧边栏创建处理函数在提交创建请求时丢掉了

快速结论:在 Open WebUI 中通过侧边栏“Folders”下的“New Folder”按钮创建文件夹时,即使已在“Folder Background Image”里选好图片,创建出的文件夹背景仍为默认,重新打开编辑对话框时图片选择器又变回“Upload”。这是侧边栏创建处理函数在提交创建请求时丢掉了 meta 字段导致的,优先排查这一路径而不是上传或后端接口。

适用环境:Open WebUI 源码部署(Git Clone),版本为 dev commit 043784c2d;操作系统 Linux;浏览器 Firefox。Issue 未提供 Ollama 版本、Python 或 CUDA 等信息。

最快修复方案:暂无确认的一步修复方案。Issue 中给出的方向是:侧边栏的创建处理函数应从对话框返回的 payload 中取出 meta,并随创建请求一起提交,与子文件夹调用方的处理方式保持一致。

注意事项:上述修改属于 Issue 中提出的修复思路,并非官方已合并的补丁;在未改代码前,从已存在文件夹的菜单中选择“Create Folder”创建子文件夹可以保留背景图,这是 Issue 中已验证可用的绕过路径。

问题场景

在 Open WebUI 的侧边栏中,展开 Folders 区域后点击“New Folder”按钮打开创建文件夹对话框。为文件夹命名,并在“Folder Background Image”旁点击“Upload”选择一张图片,此时控件从“Upload”变为“Reset”,说明图片已被读取。保存后点击进入该文件夹,聊天区域仍显示默认背景。

再打开文件夹菜单选择“Edit”,背景图控件又显示为“Upload”,像是从未选过图一样。作为对照,从某个已存在文件夹的菜单中选择“Create Folder”创建子文件夹,重复同样操作,子文件夹能够保留背景图。也就是说,同一个对话框在不同入口打开时行为不一致。

整个过程中浏览器控制台和服务器日志都没有报错信息,Issue 描述为请求本身就没有携带图片。

报错原文

issue: the background image chosen while creating a folder from the sidebar is discarded

Issue 中未提供具体的报错堆栈或错误码,该问题表现为静默丢弃数据,无控制台或服务端日志输出。

原因分析

根据 Issue 提供者的定位,根因位于前端侧边栏的创建处理逻辑:

  • 创建文件夹的对话框(FolderModal.svelte)在提交时会提交四个字段,其中包括背景图控件写入的 meta 对象。
  • 侧边栏的创建处理函数(Sidebar.svelte)在解构时只取了其中三个字段,并以这三个字段发起创建请求,因此 meta 从未离开浏览器。
  • 子文件夹路径(RecursiveFolder.svelte)会把 meta 透传下去,这就是子文件夹能保留背景图的原因。
  • Issue 明确表示:该字段在 API helper、表单模型和插入逻辑中都是被接受的,文件夹页面也能读回,问题只出在这一个处理函数丢字段。背景图功能在提交 2a234829f 时加入了对话框与子文件夹调用方,但没有同步更新这个处理函数。

环境排查

  • 确认 Open WebUI 是否为 Git Clone 源码部署,并核对版本/提交号(Issue 中为 dev commit 043784c2d)。
  • 确认出现问题的入口:是否从侧边栏“New Folder”创建;对比从已有文件夹菜单“Create Folder”创建是否正常。
  • 检查浏览器控制台是否有相关请求,并查看创建文件夹请求的 payload 是否包含 meta 字段。
  • 确认文件夹背景图上传控件在选择图片后是否由“Upload”变为“Reset”,以排除图片读取阶段的问题。
  • Issue 未提供 Python、CUDA、PyTorch、Ollama 版本信息,无需在这些项目上额外比对。

解决步骤

  1. 先确认问题入口:在侧边栏点击“New Folder”创建并设置背景图,保存后进入文件夹,若背景为默认且编辑对话框显示“Upload”,即可复现。
  2. 对照验证:从已有文件夹菜单中选择“Create Folder”创建子文件夹并设置背景图,确认该路径能正常保留背景。
  3. 检查创建文件夹请求的 payload,确认从侧边栏入口发出的请求是否缺少 meta 字段。
  4. 定位 src/lib/components/layout/Sidebar.svelte 中的创建处理函数,确认其解构与提交的字段是否只有三项。
  5. 参照子文件夹调用方(RecursiveFolder.svelte)的做法,在该处理函数中从对话框 payload 取出 meta,并加入创建请求。
  6. 在未修改代码前,可优先尝试的绕过方式是:先创建文件夹,再从已有文件夹菜单中选择“Create Folder”创建子文件夹,该路径不会丢失背景图。

验证方法

修复后,从侧边栏“New Folder”创建文件夹并设置背景图,进入该文件夹应能看到所选图片作为聊天区域背景;再次打开文件夹的“Edit”对话框,背景图控件应显示为已设置状态(而非“Upload”),即表示 meta 已成功提交并回读。

参考来源

open-webui/open-webui #30217

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 24788

发表回复

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