Swift4:从 Firebase 下载照片

Posted

技术标签:

【中文标题】Swift4:从 Firebase 下载照片【英文标题】:Swift4 : Download photo from Firebase 【发布时间】:2018-03-20 14:02:29 【问题描述】:

我想下载一张之前从 Firebase 上传的照片。我正在使用以下代码:

    fbUser = Auth.auth().currentUser
    let storage = Storage.storage()
    let storageRef = storage.reference(forURL: "somepath.some")
    let profilePicRef = storageRef.child(fbUser.uid+"_profile_pic.jpg")

    var imageFB : UIImage? = nil

    profilePicRef.downloadURL(completion:  (url, error) in

        if error != nil 
            print(error!)
            return
        

        URLSession.shared.dataTask(with: url!, completionHandler:  (data, response, error) in

            if error != nil 
                print(error!)
                return
            

            guard let imageData = UIImage(data: data!) else  return 

            DispatchQueue.main.async 
                imageFB = imageData
            

        ).resume()

    )

照片在那里 - 如果我删除照片,则会收到文件丢失的错误消息。但是,下载后,imageFB 始终等于 nil,即使照片在那里。

关于如何解决这个问题的任何建议?

【问题讨论】:

【参考方案1】:

Firebase 包含 FirebaseUI,它有助于管理图像下载/缓存。按照文档,您应该能够通过几行简单的代码下载并显示图像。

我建议你看看documentation。该链接将带您进入图像下载部分,其中包含有关如何安装和使用它的示例。

【讨论】:

【参考方案2】:

试试这个让我们知道是否有效。

 fbUser = Auth.auth().currentUser
 let storage = Storage.storage()
 let storageRef = storage.reference(forURL: "somepath.some")
 let profilePicRef = storageRef.child(fbUser.uid+"_profile_pic.jpg")

// give your db ref var here
 let ref = Database.database().reference()
 let usersRef = ref.child("users").child(uid!)

 var picArray: [UIImage]()

下载:

usersRef.observeEventType(.ChildAdded, withBlock:  (snapshot) in

  // Get download URL from snapshot
  let downloadURL = snapshot.value() as! String

  profilePicRef.downloadURL(completion:  (url, error) in
            let data = Data(contentsOf: url!)
            let image = UIImage(data: data! as Data)
            picArray.append(image)
  )
)

【讨论】:

以上是关于Swift4:从 Firebase 下载照片的主要内容,如果未能解决你的问题,请参考以下文章

我必须从 Firebase 下载图像才能显示它吗?

如何从firebase下载图像?云火库?福布斯存储?

Swift 2.3 pod 更新后使用未解析的标识符 Firebase 'FIR'

如何从fireBase推送通知swift 4中获取数据

Firebase 存储:是不是可以自动删除旧文件?

ios swift方形照片取景器