Twilio Conversations + React Native:发布时不发送图像

问题描述

我正在使用 Twilio's Conversations API 开发聊天中的图像发送功能图片发送在调试环境和模拟器上的设备上运行完美,但不适用于 iOS 和 Android (APK/IPA) 的发布版本。

选择图片代码

    function handlePickImage(){
        ImagePicker.openPicker({
            multiple: true,width: 300,height: 400,cropping: true,}).then(image => {
            var tmpObject = {};
            image.forEach(img => tmpObject[img.filename] = img)
            imagesData = {...tmpObject};
            onSend(messages,conversation)  
           }
         );
      }

发送图片代码

            for (const fileName in imagesData) {
                const form = new FormData();
                form.append('file',{
                    uri: imagesData[fileName].path,type: imagesData[fileName].mime,name: imagesData[fileName].filename,});
                form.append('ContentType',imagesData[fileName].mime);
                conversation.sendMessage(form)
                .then(i => {
                    console.log('Successfully sent media message. Form: ',objToStr(form['_parts'][0][1]))
                    alert('Successfully sent media message. Form: ' + objToStr(form['_parts'][0][1]))
                })
                .catch(err => { 
                    console.log('error sending media message. Form: ',objToStr(form['_parts'][0][1]),' err: ',err)
                    alert('error sent media message. Form: ' + objToStr(form['_parts'][0][1]) + ' err: ' + err )
                });                  
            }
            imagesData = {}
        }

来自图像选择器的 URI 来自应用的内部存储缓存,类似于 file:///data/user/0/app.package.name/cache/rn_image_picker_lib_temp_344443-34rf-34rf.png。类型是 mime 类型,看起来像 image/png

如果我将 URI 硬编码为来自网络的某些内容(例如 https://picsum.photos/200),图像会在发布时发送。

这是 error 的屏幕截图。如果我将 {media: base64string} 传递给 sendMessage 函数,我可以在调试环境中重现此错误。所以不知何故在发布时,它无法理解 FormData 并认为它是 {media: base64string}。它很可能与 URI 有关。这也不是权限问题,因为当使用同一个库从手机图库中挑选图像时,图像确实显示Image 组件中。

相关包版本:

    "react": "16.13.1","react-native": "0.63.4","@twilio/conversations": "^1.1.0","react-native-image-crop-picker": "^0.36.2",

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...