如何从Firebase获取图像下载链接

时间:2018-07-16 03:38:55

标签: swift firebase firebase-storage

我试图获取名为a.jpg的映像的下载链接,该映像位于Firebase存储中名为images的文件夹中,我正在尝试这样做:

    let store = FIRStorage.storage()
    let storeRef = store.reference()
    let reference = storeRef.child("images").child("a.jpg")
    reference.downloadURL { url, error in
        if let error = error {
            print(error)
        }
        else {
            print(url!)
        }
    }

在调试url中,这样做:

  

表达式产生的错误:错误:执行被中断,原因:EXC_BAD_ACCESS(代码= 1,地址= 0x20)。   该过程已返回到表达式求值之前的状态。

1 个答案:

答案 0 :(得分:0)

创建参考

要首先下载文件,请为要下载的文件创建Cloud Storage引用。

您可以通过将子路径附加到存储根目录来创建引用,也可以从现有gs://或https:// URL引用云存储中的对象来创建引用。

// Create a reference with an initial file path and name
let pathReference = storage.reference(withPath: "images/stars.jpg")

// Create a reference from a Google Cloud Storage URI
let gsReference = storage.reference(forURL: "gs://<your-firebase-storage-bucket>/images/stars.jpg")

// Create a reference from an HTTPS URL
// Note that in the URL, characters are URL escaped!
let httpsReference = storage.reference(forURL: "https://firebasestorage.googleapis.com/b/bucket/o/images%20stars.jpg")

下载文件

获得参考后,您可以通过三种方式从Cloud Storage下载文件:

  1. 下载到内存中的NSData
  2. 下载到表示设备上文件的NSURL
  3. 在线生成代表文件的NSURL

下载到内存中

使用dataWithMaxSize:completion:方法将文件下载到内存中的NSData对象。这是快速下载文件的最简单方法,但是它必须将文件的全部内容加载到内存中。如果您请求的文件大于应用程序的可用内存,则应用程序将崩溃。为了防止出现内存问题,请确保将最大大小设置为您的应用可以处理的大小,或使用其他下载方法。

// Create a reference to the file you want to download
let islandRef = storageRef.child("images/island.jpg")

// Download in memory with a maximum allowed size of 1MB (1 * 1024 * 1024 bytes)
islandRef.getData(maxSize: 1 * 1024 * 1024) { data, error in
  if let error = error {
    // Uh-oh, an error occurred!
  } else {
    // Data for "images/island.jpg" is returned
    let image = UIImage(data: data!)
  }
}

请点击以下链接了解更多详情

https://firebase.google.com/docs/storage/ios/download-files

相关问题