Skip to content

[Bug] 桌面版 ChatUI 无法通过拖拽添加文件附件 #167

Description

@Nartsam

What happened? / 实际发生了什么?

在 Windows 桌面版 AstrBot 的 ChatUI 中,无法通过从资源管理器拖拽文件的方式为当前会话添加附件。

将文件拖到消息输入框或附件区域时,界面没有显示附件,文件也没有进入待发送列表。使用附件按钮打开系统文件选择对话框后,选择同一个文件则可以正常添加。

然而,在通过浏览器访问同一个 AstrBot Web UI 时,拖拽文件添加附件可以正常工作,因此问题似乎只出现在 AstrBot Desktop 内嵌的 WebView2/Tauri 窗口中。

我实际复现时使用的桌面端版本为 v4.26.7,当前 main 分支的 tauri.conf.json 中似乎仍未配置 dragDropEnabled,我在本地源码中配置了该选项后重新构建,成功修复了这个问题。

Expected behavior / 预期行为

Windows 桌面版的 ChatUI 应当与浏览器 WebUI 保持一致,将文件从文件资源管理器中拖入 ChatUI 内时,可以正常上传为附件。

Steps to reproduce / 复现步骤

  1. 在 AstrBot Desktop 中打开 ChatUI,并进入任意一个可以发送消息的会话
  2. 从 Windows 资源管理器中选择一个普通文件
  3. 将文件拖到 ChatUI 的消息输入框或附件区域,松开鼠标,观察到文件没有被添加,界面没有正常进入附件上传流程
  4. 在浏览器中访问同一个 AstrBot Web UI,再次拖拽同一个文件,浏览器中的拖拽添加可以正常工作

Desktop version / 桌面端版本

v4.26.7

Installation channel / 安装来源

GitHub Release installer

OS / 操作系统

Windows

Architecture / 架构

amd64

Upstream AstrBot ref used by desktop build (optional) / 桌面构建使用的上游 AstrBot Ref(可选)

No response

Logs, screenshots, and additional context / 日志、截图与补充信息

目前未观察到桌面端或后端错误日志。该问题似乎发生在文件进入附件上传流程之前,因为桌面版没有收到正常的 HTML5 文件拖放事件。我的检查结果如下:

打包后的 ChatUI 已经实现了 dragoverdragleavedrop 处理,且文件拖拽入口读取 event.dataTransfer.files、文件选择框入口读取 event.target.files,两种方式获得文件后,都会进入同一个 fileSelect 附件处理流程。
因此,现有 ChatUI 和后端上传流程应该已经支持拖拽附件,问题应该出在桌面端 WebView 的事件转发层,当前 AstrBot Desktop 源码中没有发现对 Tauri 原生 DragDropEvent 的监听,而且当前 src-tauri/tauri.conf.json 的主窗口配置没有显式设置 dragDropEnabled

Tauri v2 官方文档说明,dragDropEnabled 默认启用 Tauri 自己的文件拖放处理器,在 Windows 上,如果希望 WebView 使用标准 HTML5 drag-and-drop,需要将其设置为 false。因此,可以解决此问题的最小修复是对文件:

https://github.com/AstrBotDevs/AstrBot-desktop/blob/main/src-tauri/tauri.conf.json

应用如下更改:

         "fullscreen": false,
-        "backgroundThrottling": "disabled"
+        "backgroundThrottling": "disabled",
+        "dragDropEnabled": false

### Willing to submit a PR? / 是否愿意提交 PR?

- [ ] I am willing to submit a PR to fix this issue. / 我愿意提交 PR 修复此问题。

### Code of Conduct

- [x] I agree to follow the project's Code of Conduct. / 我同意遵守项目行为准则。

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions