从React Native

时间:2016-09-02 00:39:40

标签: javascript firebase react-native firebase-storage

我看到很多关于从React Native上传到Firebase存储的讨论,但似乎都是如何解决React Native不支持Blob或文件的事实。但Firebase使用putString方法上传base64编码文件。

例如,为什么此代码在浏览器中工作,而在React Native中不起作用:

var base64String = "iVBORw0KGgoAAAA...";
firebase
  .storage()
  .ref()
  .child(`test/test.png`)
  .putString(base64String, 'base64')
  .then(function(snapshot) {
    console.log('Uploaded a base64 string!');
  })
  .catch(function(err) {
    console.log('Problems', err);
  });

React Native中没有给出错误,但没有文件到达Firebase。是什么赋予了?

1 个答案:

答案 0 :(得分:4)

Firebase Storage JS dev。

要明确,在撰写本文时(2016年9月2日)React Native不支持Firebase存储上传。

要回答关于为什么上传在浏览器中工作而不是React Native的问题:我们的putString()方法不需要Blob支持,但是如果你传入base64字符串我们的库仍然必须以某种方式发送二进制数据。

在现代浏览器中,您可以将二进制数据存储在ArrayBuffer中,并将其作为XMLHttpRequest或Fetch请求的主体发送 - 在React Native中不是这样。

据我们所知,React Native核心库目前没有提供一种发送内存二进制数据作为HTTP请求主体的好方法。