You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于getstream.io实现未发送附件的消息草稿存储

解决方案:扩展GetStream草稿功能支持附件
  • 用Message自定义字段存附件元数据
    GetStream的Message模型支持custom_data自定义字段,你可以把附件的核心信息(文件名、大小、临时存储地址、文件类型)塞进这里,同时加个is_draft: true标记草稿状态。示例代码:

    // 创建带附件元数据的草稿消息
    client.channel('messaging', 'your-channel-id').sendMessage({
      text: '还没发的草稿内容',
      custom_data: {
        is_draft: true,
        attachments: [
          {
            name: 'project.zip',
            size: 1024000,
            temp_url: 'https://your-temp-storage.com/project.zip',
            type: 'application/zip'
          }
        ]
      },
      user_id: 'current-user-id'
    });
    

    要是附件还没传到永久存储,这里就存临时地址或者本地文件的标识,等用户确认发送时再替换成正式存储的URL。

  • 自建草稿表关联Stream会话
    要是你需要更灵活的草稿管理(比如多版本保存、大附件处理),可以在自己的数据库里建个drafts表,字段包含user_id、channel_id、draft_text、attachments(存附件的完整信息或者文件存储ID)、stream_msg_id(如果已经在Stream创建了草稿消息)。用户发送时,把草稿内容同步成Stream的正式消息,再删掉这条草稿记录就行。

  • 前端本地暂存+后端同步
    对于还没提交到后端的草稿,前端可以用localStorage或者IndexedDB暂存附件的本地文件对象(小文件也能转成Base64存),用户切换页面后还能恢复。等用户要发送时,先把附件传到你的存储服务,拿到正式URL后,再和文本一起创建Stream消息。

注意事项

  • 附件尽量存在你自己的存储服务(比如S3、OSS),别用Stream的消息存文件,Stream主打消息流,不是文件存储。
  • 给草稿加个过期清理规则,比如用户7天没编辑就删掉,避免堆冗余数据。
  • 要是需要多设备同步,必须靠后端数据库存草稿,前端只做临时缓存。

内容的提问来源于stack exchange,提问作者Minh Tran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 06:03:13