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 下载照片的主要内容,如果未能解决你的问题,请参考以下文章