【发布时间】:2019-01-29 03:20:48
【问题描述】:
我已经四处寻找答案。我得到的最接近的是here,但是,它并不能完全回答我的问题。也就是说,如何在数据库中存储对保存在 firebase 存储中的图像的引用。
以下是我尝试过的代码。它可以在上传时存储一张图片,但我不确定这是否是他们通过存储参考的意思。
if let imageData = UIImageJPEGRepresentation(image, 0.8) {
let metadata = storageRef //.child("poop/")
let uploadTask = metadata.putData(imageData, metadata: nil) {
(metadata, error) in
guard let metadata = metadata else {
// Uh-oh, an error occurred!
return
}
// You can also access to download URL after upload.
storageRef.downloadURL {
(url, error) in
guard let downloadURL = url else {
// Uh-oh, an error occurred!
return
}
//let imgURL = url
//database integration
let ref = Database.database().reference()
let usersRef = ref.child("usersPosts")
let uid = Auth.auth().currentUser?.uid
let newUserRef = usersRef.child(uid!)
//creates a child for email and password (i think we shud store password so we can tell sumone what it is inmediatly, maybe)
newUserRef.setValue(["Image": "\(downloadURL)"])
}
}
// let imgURL = storageRef.downloadURL
//
// //database integration
// let ref = Database.database().reference()
// let usersRef = ref.child("usersPosts")
//
// let uid = Auth.auth().currentUser?.uid
// let newUserRef = usersRef.child(uid!)
// //creates a child for email and password (i think we shud store password so we can tell sumone what it is inmediatly, maybe)
//// newUserRef.setValue(["Image": "\(imgURL)"])
// For progress
uploadTask.observe(.progress, handler: { (snapshot) in
guard let progress = snapshot.progress else {
return
}
let percentage = (Float(progress.completedUnitCount) / Float(progress.totalUnitCount))
progressBlock(Double(percentage))
})
} else {
completionBlock(nil, "Image could not be converted to Data.")
}
感谢您的帮助!
【问题讨论】:
标签: ios swift firebase firebase-realtime-database firebase-storage