Skip to content

[Feature] 支持在侧边栏聊天输入区拖拽上传文件 #55

Description

@kimbluerain

What do you want? (你想要什么?)

希望 Cebian 侧边栏的聊天输入区支持从系统文件管理器直接拖入文件作为附件,而不必每次点击“添加文件”按钮再通过文件选择窗口选择。

期望行为:

  • 支持一次拖入一个或多个文件;
  • 拖动文件进入输入区时显示清晰的拖放高亮提示;
  • 松开后将文件添加到当前消息的附件列表;
  • 保留现有点击“添加文件”的上传方式;
  • 派发消息期间不接受新的拖放附件。

Why? (为什么?)

Cebian 运行在浏览器侧边栏中,用户经常需要一边浏览网页,一边将 Finder / 文件资源管理器中的本地文件交给 Agent 分析。当前必须点击附件按钮并经过系统文件选择窗口,操作路径较长,也不符合聊天工具常见的文件交互习惯。

直接拖放能够明显减少操作步骤,特别适合连续添加截图、文本、代码和数据文件的场景。

How? (怎么做? — 可选)

现有 components/chat/ChatInput.tsx 已经包含完整的文件读取及校验逻辑。建议:

  1. handleFileUpload 中处理 FileList 的逻辑提取为可复用函数;
  2. 在聊天输入区域增加 dragenterdragoverdragleavedrop 处理;
  3. 仅在 DataTransfer 包含文件时拦截默认行为,避免影响普通文本拖动;
  4. 点击选择和拖放统一复用现有规则:
    • 附件数量上限;
    • 图片与文本文件类型校验;
    • 文件大小限制;
    • 当前模型是否支持图片;
    • 读取失败提示;
  5. 增加拖放状态的视觉反馈和必要的国际化文本;
  6. 补充针对多文件、超限、不支持类型及 dispatching 状态的测试。

实现范围可以保持在输入组件及少量可复用附件处理逻辑内,不需要改动后台附件协议。

如方案可行,请维护者回复 /ready,我可以提交实现 PR。

Alternatives considered (考虑过的替代方案 — 可选)

目前可以点击回形针按钮打开系统文件选择器,但连续添加文件时步骤较多;粘贴只适用于剪贴板中的图片或文本,不能替代从文件管理器拖入任意受支持文件。

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-to-implementMaintainer approved this issue for implementation

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions