Я пытаюсь загрузить изображение в хранилище и получить downloadURL для хранения в базе данных. Эта функция получает UIImage (взятый из камеры) и uid.
Загрузка изображения работает нормально, но я не могу получить URL из базы данных. Похоже, что он не запускает код внутри функции .putData.
Примечание: сохранение данных в базе данных работает, но не из функции.
func uploadImage(image:UIImage, userID:String){
// Get a reference to the storage service using the default Firebase App
let storage = Storage.storage()
// Create a storage reference from our storage service
let storageRef = storage.reference()
profileImage.image = image
// dismissViewControllerAnimated(true, completion: nil)
var data = Data()
//data = UIImageJPEGRepresentation(profileImage.image!, 0.8)! as NSData
data = profileImage.image!.jpegData(compressionQuality: 0.8)!
// set upload path
let filePath = "users/\(userID)/\("userPhoto")"
let metaData = StorageMetadata()
metaData.contentType = "image/jpg"
let refer = storageRef.child(filePath)
refer.putData(data, metadata: metaData, completion: { metadata, error in
if error != nil {
print("Error: \(error!.localizedDescription)")
return
}
refer.downloadURL(completion: { (url, error) in
if error != nil {
print("Failed to download url:", error!)
return
} else {
//Do something with url
let URL = (url?.absoluteString)!
print(URL)
self.databaseRef.child("users").child(userID).updateChildValues(["userPhoto": URL])
}
})
})
}