遍历Firebase存储以显示多个图像

时间:2019-04-19 05:24:48

标签: javascript firebase

当前,我能够知道其标题和在存储中的位置来获取特定图片,但是我希望能够知道该存储文件夹的位置而不是内容标题,将所有图片显示在我的存储中的一个文件夹中。

我尝试使用下面的代码(projectID是我需要显示其所有元素的文件夹),但它似乎不起作用。我是javascript新手,因此为.once的错误函数调用表示歉意。

const childRef = storageRefer.child(`${projectID}`);
childRef.once("value", function(snapshot) {
  snapshot.forEach(function(child) {
    child.getDownloadURL().then(function(url) {
      console.log(url);
    });
  });
});

此代码应该能够记录所有图像的url,但是我得到的只是关于.once函数的错误。如果有人知道我做错了什么,或者将所有图像放入存储设备中一个文件夹中的更好方法,那将非常有用,谢谢!

编辑:

回想一下,我意识到我可以将图像的位置存储到数据库中,因为我可以轻松地遍历数据库,而无需了解内部内容并调用存储来获取图像,但这似乎草率?” / p>

3 个答案:

答案 0 :(得分:1)

Firebase Storage当前没有API调用可列出文件夹中的所有文件。如果需要此类功能,则应将文件的元数据(例如下载URL)存储在可以列出它们的位置。 Firebase Firestore非常适合此操作,使您还可以轻松地与其他人共享URL。

答案 1 :(得分:0)

@Shodmoth,查看此新的Firebase链接(https://firebase.google.com/docs/storage/web/list-files),了解如何列出文件夹中的所有文件。

// Create a reference under which you want to list
var listRef = storageRef.child('files/uid');

// Find all the prefixes and items.
listRef.listAll().then(function(res) {
  res.prefixes.forEach(function(folderRef) {
     console.log(folderRef)
  });
  res.items.forEach(function(itemRef) {
     console.log(itemRef) //can call .getDownloadURL() on each itemRef
  });
}).catch(function(error) {
  // Uh-oh, an error occurred!
});

答案 2 :(得分:0)

 var listRef = firebase.storage().ref().child('profiles/');


  listRef.listAll().then(function(res){
     res.items.forEach(function(itemRef){
      itemRef.getDownloadURL().then(function (link) {
        console.log(link);
      })
    
   })
 })
}

此功能将保存在存储“个人资料”中的所有照片 我希望它对你有用。