我正在使用npm package在react-native中实现可编程聊天。不幸的是,我坚持能够正确地将带有图像的消息上传到twilio。 twilio js documentation概述了3种创建媒体消息的方法。发送:1)FormData(似乎不适用于react-native?),2)字符串,或3)缓冲区。
我在这一点上尝试了很多变化而且很难过。我和react-native-fs以及react-native-fetch-blob一直到处都是,并且还没有破解它。
我尝试的所有内容都会导致失败或上传字符串。上传String时,我可以通过获取创建的媒体消息,获取媒体附件的临时URL,手动获取存储在该URL的String,然后为Image元素制作base64数据uri来完成往返。获取的字符串。但我99%肯定是'做错了'。如果我做得对,Twilio应该为我存储一个实际图像并给我一个临时网址,我可以直接输入到我的Image元素,对吗?
总结一下:我可以将一个base64编码的字符串存储在twilio中,但是对于我的生活,我无法弄清楚如何将图像二进制文件存储在那里以便在点击网址时可以直接访问它在。
我觉得我必须要错过一些简单的东西,但我现在已经没有想法了。有没有办法让反应原生的缓冲区设置?我应该尝试使用FormData吗?
答案 0 :(得分:2)
我终于弄明白了。这只是一个问题,不知道如何将文件放入react native中的缓冲区。我终于能够通过react-native-fs和buffer的组合来实现这一目标。代码看起来像:
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 => {})
})
}
这可能不是解决问题的最佳实践方法,但它让它对我有用,所以现在继续。