我正在使用 npm package 在 react-native 中实现可编程聊天.不幸的是,我坚持能够正确地将带有图像的消息上传到 twilio。 twilio js documentation概述了创建媒体消息的 3 种方法。发送:1) FormData(在 react-native 中似乎不适用于我?),2) 字符串,或 3) 缓冲区。
此时我已经尝试了很多变体,但都被难住了。我到处都是react-native-fs和 react-native-fetch-blob并且还没有破解它。
我尝试的所有操作都以失败告终或上传了一个字符串。上传字符串后,我可以通过获取创建的媒体消息、获取媒体附件的临时 url、手动获取存储在该 url 的字符串,然后为图像元素制作 base64 数据 uri 来完成往返获取的字符串。但我 99% 确定那是“做错了”。如果我做对了,Twilio 应该会为我存储一个实际图像并给我一个临时 url,我可以直接将其提供给我的图像元素,对吗?
总结一下:我可以得到一个 base64 编码的字符串存储在 twilio 中,但是对于我来说,我无法弄清楚如何将图像二进制文件放在那里以便在点击 url 时可以直接访问它在。
我觉得我必须缺少一些简单的东西,但我现在没有想法。有没有办法在 native react 中设置缓冲区?我应该尝试使用 FormData 吗?
最佳答案
我终于明白了。这只是一个问题,不知道如何将文件放入 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 => {})
})
}
这可能不是解决问题的最佳实践方法,但它对我有用,所以现在继续。
关于react-native - 在 react-native 中将媒体(图像)上传到 twilio 可编程聊天时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48602752/