一尘不染

从Firebase Storage检索节点下的多张照片

swift

我有一个CollectionView,我正在使用Firebase Storage中的图像进行填充。我将图像存储在“
userId”节点下。我想检查节点下可用的大量文件是否存在,因此可以将它们存储在数组中。

我试图分别为每个URL检索URL,但是,我认为这是一种非常错误的方法。但是,我不知道如何以最有效的方式做到这一点以及放在哪里collectionView.reload()。这是我所做的:

let storage = FIRStorage.storage()
let firstImageRef = storage.referenceForURL("gs:storageUrl").child(uid).child("profile.jpg")

firstImageRef.downloadURLWithCompletion { (URL, error) -> Void in
   if (error != nil) {
       print(error)
   } else {
       if let url = URL {
         self.databaseImagesOrder.append(url)
       }
   }
}

let secondImageRef = storage.referenceForURL("gs:storageUrl").child(uid).child("second_pic.jpg")
secondImageRef.downloadURLWithCompletion { (URL, error) -> Void in
   if (error != nil) {
      print(error)
   } else {
      if let url = URL {
        self.databaseImagesOrder.append(url)
      }
   }
 }

 // etc..

 collectionView.reloadData()

另外,将图像作为NSData来获取是否比先获取url然后再获取图像更好?如果是这样,如何从Firebase Storage批量检索图像?


阅读 203

收藏
2020-07-07

共1个答案

一尘不染

目前,没有从Firebase Storage批量上传或批量上传/下载的文件-
我认为这里有太多问题:我们将文件压缩并以这种方式存储吗?是否会返回压缩包等?我们是否会返回一组下载URL或适当的数据?

对于列出和下载多个文件的问题,我们的解决方案是单独上传文件并将URL存储在另一个数据库(例如Firebase
Realtime数据库)中,然后您可以同步并用于单独下载每个文件(或存储下载文件)并使用类似的工具SDWebImage来下载或缓存相应的网址)。

有关如何执行此操作的示例,请参见&feature=youtu.be)。

2020-07-07