簡體   English   中英

Swift4:從Firebase下載照片

[英]Swift4 : Download photo from Firebase

我想下載以前從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。

關於如何解決該問題的任何建議?

Firebase包含FirebaseUI,可幫助管理圖像下載/緩存。 根據文檔,您應該能夠以幾行簡單的代碼下載並顯示圖像。

我建議您看一下文檔 該鏈接將帶您到圖像下載部分,並提供有關如何安裝和使用它的示例。

試試這個讓我們知道是否可行。

 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)
  })
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM