试图将图片上传到firebase存储但是没有被执行?

时间:2017-09-23 00:19:08

标签: ios swift firebase firebase-storage

var img: UIImage!

if self.profileImg.image == #imageLiteral(resourceName: "add_image"){
    img = #imageLiteral(resourceName: "add_image")
}else{
    img = self.profileImg.image
}

if let  imgData = UIImageJPEGRepresentation(img, 0.2){
    print(imgData)
    let imageUid = NSUUID().uuidString
    print(imageUid)
    let metaData = StorageMetadata()
    print(metaData)
    metaData.contentType = "image/jpeg"

    DataService.ds.REF_PROFILE_IMAGES.child(imageUid).putData(imgData, metadata: metaData, completion: { (metadata, error) in
        if error != nil {
            print ("ADAM: UNABLE TO UPLOAD IMAGE TO FIREBASE STORAGE")
        }else{
            print ("ADAM: SUCCESSFULLY UPLOADED PROFILE IMAGE ")
            self.downloadURL = metaData.downloadURL()?.absoluteString


        }
    })
}else{
    print("ADAM: SUMTING WONG")
}

Auth.auth().createUser(withEmail: emailField.text!, password: passwordField.text!) { (user, error) in

    if error == nil {
        print("ADAM: You have successfully signed up")

        // saving the image to storage and link to database

        let firstName = self.firstNameField.text
        let lastName = self.LastNameField.text
        let userName = self.usernameField.text
        let profileImageUrl = self.downloadURL
        print(profileImageUrl)
        let userData = ["provider" : user!.providerID, "FirstName": firstName, "LastName": lastName, "username": userName, "profileImageURL": profileImageUrl]

        self.completeSignIn(id: user!.uid, userData: userData as! Dictionary<String, String>)

个人资料图片网址重复返回nil,因此不允许我运行登录功能。当我调试时,我可以看到跳过Dataservice方法,我不明白为什么:/

1 个答案:

答案 0 :(得分:2)

我使用它来创建用户并在Firebase数据库和存储中的图像中存储用户信息。

func registerUser(withName: String, email: String, password: String, profilePic: UIImage, completion: @escaping (Bool) -> Swift.Void) {
        Auth.auth()?.createUser(withEmail: email, password: password, completion: { (user, error) in
            if error == nil {
                user?.sendEmailVerification(completion: nil)
                let storageRef = FIRStorage.storage().reference().child("usersProfilePics").child(user!.uid)
                let imageData = UIImageJPEGRepresentation(profilePic, 0.1)
                storageRef.putData(imageData!, metadata: nil, completion: { (metadata, err) in
                    if err == nil {
                        let path = metadata?.downloadURL()?.absoluteString
                        let values = ["name": withName, "email": email, "profilePicLink": path!]
                        FIRDatabase.database().reference().child("users").child((user?.uid)!).child("credentials").updateChildValues(values, withCompletionBlock: { (errr, _) in
                            if errr == nil {
                                let userInfo = ["email" : email, "password" : password]
                                UserDefaults.standard.set(userInfo, forKey: "userInformation")
                                completion(true)
                            }
                        })
                    }
                })
            }
            else {
                completion(false)
            }
        })
    }