0

我正在使用 Circuit JS SDK 并希望发送带有附加图像的消息。我在文档中发现我应该将 item.attachments 设置为 File[] 对象。但是,如果我只有图像 URL(如https://abc.cde/fgh.png ) ,我该怎么做?

4

1 回答 1

1

为了能够在对话中发布图像,需要将图像上传到 Circuit,addTextItem正如您已经发现的那样,这是在 API 内部完成的。是的,这个 API 需要一个对象数组File

您需要通过 XMLHttpRequest 将图像下载为 blob,然后构造一个 File 对象。

  const xhr = new XMLHttpRequest();
  xhr.responseType = 'blob';
  xhr.open('GET',<url of image> , true);

  xhr.onreadystatechange = async () => {
    if (xhr.readyState == xhr.DONE) {
      const file = new File([xhr.response], 'image.jpg', { lastModified: Date.now() });
      const item = await client.addTextItem(convId.value, { 
        attachments: [file]
      });
    }
  };

  xhr.send();

这是一个 jsbin https://output.jsbin.com/sumarub

于 2019-11-15T13:42:44.460 回答