使用Formdata React Native将图像上传到Firebase

时间:2018-08-31 01:00:58

标签: javascript firebase react-native firebase-realtime-database ecmascript-6

我正在尝试使用formdata将图像上传到firebase。但是我收到此错误

"Invalid data; couldn't parse JSON object, array, or value."

这是我的代码

const formData = new FormData();
    formData.append('Lname', 'aa');
    formData.append('FName', 'aas');
    formData.append('image', {
        url:image,
        name:'profilePic.jpg',
        type: 'image/jpg'


    })

   const request =  axios({
    method: 'POST',
        url:`https://test2card-e8014.firebaseio.com/profileInfo.json`,
      data: formData,
      headers: {

        'Content-Type': 'multipart/form-data;',
      },
    }).then( response => {

        console.log('log', response.data)
        return response.data
    }).catch(e=>{
    console.log('err',e.response.data)

    })

和即时通讯使用ios模拟器 这是我的图片网址-file:/// Users / kk / Library / Developer / CoreSimulator / Devices / 3ED3277A-DE0C-478A-AFAE-FE24D67A76DB / data / Containers / Data / Application / D091EAA9-E390-49C8-AFF7-E862A6A8B93A /文档/图像/F0FDE0FB-84FE-43BB-8F0C-25D52A223703.jpg

我也可以知道什么是最好的,最有效的方法来完成这项工作。

谢谢。

1 个答案:

答案 0 :(得分:0)

我认为Firebase在默认情况下不接受多部分/表单数据请求,因此您需要考虑启用它以使请求正常工作。

因此,您可以使用Firebase来处理multipart / form-data请求,并使用另一种服务将文件发送到其中,例如Cloud Storage for Firebase

或者,如果您的文件不会太大,又不想配置Firebase也不启用multipart / form-data请求,则可以将文件作为Base64字符串发送,然后进行firebase解码请求处理程序中的base64字符串,并按计划处理图像。

记住以Base64格式发送将使数据大小增加约1/3,以及将图像转换为base64所需的前端计算。