预信息:
我仍然打开了Firebase项目,并且我仍然成功使用了Firebase数据库(所以 firebase.initializeApp(config)
正常工作)。
我在Firebase Storage的“ / Images / ”文件夹中上传了几张图片,并将其命名为 image1.jpg , image2.jpg ,..
React-Native:0.31.0, Firebase:3.3.0
我想要的是什么:
我想从Firebase存储中获取图片并将其放入<Image>
我实际做了什么:
var storageRef = firebase.storage().ref('Images/image1.jpg');
//1. Try:
storageRef.getDownloadURL().then(function(url) {
console.log(url);
)}
//2. Try:
var sampleImage = storageRef.getDownloadURL().then(function(url) {
console.log(url);
)}
//3. Try:
var sampleImage = storageRef.getDownloadURL();
有关代码的信息:
代码未达到console.log(url)
点
2.1。试图在sampleImage
对象中使用source
作为<Image>
:空图片
2.2。尝试log
sampleImage
: undefined
2.3。试图log
url
:没有达到这一点
3.1。试图在sampleImage
对象中使用source
作为<Image>
:空图片
3.2。尝试log
sampleImage
: { F: 0, ka: undefined, o: { F: 0, ... } }
所有尝试在2-3分钟后返回相同的错误代码。
Firebase存储:超出操作的最大重试时间,请尝试 试。
非常感谢你提前帮助。
答案 0 :(得分:3)
你的第一个似乎是正确的基于文档。我相信你收到了一个错误,所以连接错误回调:
storageRef.getDownloadURL().then(function(url) {
console.log(url);
}, function(error){
console.log(error);
});
请参阅:https://firebase.google.com/docs/reference/js/firebase.storage.Reference#getDownloadURL
答案 1 :(得分:3)
<强>更新强>
我向Firebase支持部门报告了此问题,我收到了以下回复:
我们的工程师回来了,似乎这是一个特定于Android的问题(适用于iOS)[..]我们目前正在研究这个问题,但至于时间表,我们目前无法分享任何内容< / p>
<强>研究强>
看来这是一个由react-native的XMLHttpRequest操作引起的实际错误。当以相同的方式尝试getDownloadURL()时,你会描述相同的事情(即达到最大重试时间)。
然而,当覆盖this stack overflow thread getDownloadURL()中描述的react-native的XMLHttpRequest polyfill将正常完成并返回有效的URL时。
我们正在使用react-native v0.33.0,Firebase v3.4.1
解决方法强>
我们一直在使用此解决方法;绕过Firebase API:
var bucket = firebase.storage().ref().bucket;
var firebaseUrl = "https://firebasestorage.googleapis.com/v0/b/" + bucket + "/o/";
var finalUrl = firebaseUrl + 'path%2Fto%2Fresource';
firebase.auth().currentUser.getToken()
.then((token) => {
fetch(finalUrl, {headers: {'Authorization' : 'Firebase ' + token}})
.then((response) => response.json())
.then((responseJson) => {
var downloadURL = finalUrl + "?alt=media&token=" + responseJson.downloadTokens})
})
});
这是一个似乎影响少量用户的问题,因为我只看到了提出的问题here。然而,这似乎是一个真正的错误,当它发生时它非常虚弱,所以任何更多的输入将非常感激。
答案 2 :(得分:0)
要从存储设备中获取所有图像
firebase.storage().ref().child('filename').list().then(result => {
// Loop over each item
result.items.forEach(pics => {
firebase.storage().ref().child(pics.fullPath).getDownloadURL().then((url) => {
console.log(url);
//these url will be used to display images
})
});
})