我看到很多关于从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。是什么赋予了?
答案 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请求主体的好方法。