【问题标题】:Swift 3 - How to download Profile Image from FireBase StorageSwift 3 - 如何从 FireBase 存储下载配置文件图像
【发布时间】:2023-03-25 17:28:01
【问题描述】:

我在从 firebase 存储中检索图像时需要帮助,我学会了如何保存它,但无法将其下载到当前用户配置文件中。 到目前为止,这是我的代码:

FIRAuth.auth()?.createUserWithEmail(email!, password: password!, completion: { (authData, error) in
            if error == nil {

                if (password == "" || name == "" || email == "") {
                    self.showAlert("error", message: " Please Fill In The Blank")
                }
                if (password != confirm_password) {
                    self.showAlert("ERROR", message: "Password Don't Match")
                }

            }
            else {
                self.showAlert("ERROR", message: "Please Try Again")
            }

            let filePath = "\(FIRAuth.auth()!.currentUser!.uid)/\("userPhoto")"
            var data = NSData()
            let metaData = FIRStorageMetadata()
            //let imageName = NSUUID().UUIDString
            let storageRef = FIRStorage.storage().referenceForURL("gs://storageURL")
            storageRef.child(filePath).putData(data, metadata: metaData){(metaData,error) in
                if let error = error {
                    print(error.localizedDescription)
                    return
                }
                if let ProfileImageUrl = metaData?.downloadURL()?.absoluteString {
                    let values : [String : AnyObject] = ["name": name!, "email": email!, "profileImageUrl": ProfileImageUrl]
                    self.userPost(values)
                }

            }


        })

    }
    //save data in Database
    func userPost(values: [String: AnyObject]) {

        let ref = FIRDatabase.database().referenceFromURL("https://databaseURL.firebaseio.com/")
        ref.child("users").childByAutoId().setValue(values)
    }

所以到目前为止我得到了它,但无法弄清楚如何将它下载到用户配置文件。 这是我的用户 ProfileVC 代码:

@IBOutlet weak var ProfileImg: UIImageView!

 override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        self.retriveData()
        ProfileImg.image = UIImage(named: "ic_account_circle.png")
        imagePicker.delegate = self
    }

 func DownloadProfilePhoto() {
        let storageRef = FIRStorage.storage().referenceForURL("gs://StorageURL.com")
        let filePath = "\(FIRAuth.auth()!.currentUser!.uid)/\("userPhoto")"

    }

请帮忙.....

【问题讨论】:

标签: swift swift3 firebase-storage ios9.3


【解决方案1】:

您需要下载图像数据,然后创建图像。你应该试试这个:

let storage = FIRStorage.storage()
var reference: FIRStorageReference!
reference = self.storage.referenceForURL("gs://appname.appspot.com/filePath")
reference.downloadURLWithCompletion { (url, error) in
    let data = NSData(contentsOfURL: url!)
    let image = UIImage(data: data!)
    ProfileImg.image = image 
}

您应该查看 Firebase 文档https://firebase.google.com/docs/storage/ios/download-files

【讨论】:

    【解决方案2】:

    对于寻找 swift 4

    的人
    let storage = Storage.storage()
    var reference: StorageReference!
    reference = storage.reference(forURL: "gs://appname.appspot.com/filePath")
    reference.downloadURL { (url, error) in
        let data = NSData(contentsOf: url!)
        let image = UIImage(data: data! as Data)
        cell.imgOutlet.image = image
    
    }
    

    【讨论】:

      猜你喜欢
      • 2019-11-25
      • 1970-01-01
      • 2018-04-02
      • 2023-03-20
      • 2017-10-08
      • 2016-12-28
      • 2021-12-28
      • 1970-01-01
      • 2020-01-09
      相关资源
      最近更新 更多