3

我正在使用npm 包在 react-native 中实现可编程聊天。不幸的是,我坚持能够正确地将带有图像的消息上传到 twilio。twilio js 文档概述了创建媒体消息的 3 种方法。发送:1)FormData(在 react-native 中似乎不适用于我?),2)字符串,或 3)缓冲区。

在这一点上我已经尝试了很多变化并且被难住了。我用react-native-fsreact-native-fetch-blob到处都是,但还没有破解它。

我尝试的一切都会导致失败或上传字符串。上传字符串后,我可以通过获取创建的媒体消息,获取媒体附件的临时 url,手动获取存储在该 url 中的字符串,然后为 Image 元素制作 base64 数据 uri 来完成往返获取的字符串。但我 99% 确定那是“做错了”。如果我做对了,Twilio 应该为我存储一个实际图像并给我一个临时 url,我可以直接将它提供给我的 Image 元素,对吗?

总结一下:我可以将base64编码的字符串存储在twilio中,但是对于我的一生,我无法弄清楚如何将图像二进制文件放在那里以便在点击它所在的url时可以直接访问.

我觉得我必须错过一些简单的东西,但我现在没有想法。有没有办法在本机反应中设置缓冲区?我应该尝试使用 FormData 吗?

4

1 回答 1

4

我终于想通了。这只是一个不知道如何在本机反应中将文件放入缓冲区的问题。我终于能够使用react-native-fsbuffer的组合来完成这项工作。代码看起来像:

import RNFS from 'react-native-fs'

myMethod(twilioChannelObject, filePathString) {
  RNFS.readFile(filePath, 'base64').then((data) => {
    var Buffer = require('buffer/').Buffer
    data = Buffer.from(data, 'base64')

    twilioChannelObject.sendMessage({
      contentType: 'image/png',
      media: data
    }).then(id => {})
  })
}

这可能不是解决问题的最佳实践方法,但它对我有用,所以现在继续。

于 2018-02-07T06:21:29.907 回答