Получение ссылки на скачивание с картинки с FireBase в Swift - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь загрузить изображение в хранилище и получить 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])
            }

        })
    }) 
}
...