对于使用Firebase登录的特定用户,如何快速保存并加载用户的个人资料图片?

时间:2019-04-24 21:55:30

标签: ios swift firebase firebase-realtime-database

我有一个基本的用户创建活动,名称,电子邮件和密码。我正在尝试保存用户的个人资料图片,并在他们登录后将其加载到他们的个人资料页面中。我该怎么办?

我已经在数据库中存储了用户的姓名和电子邮件,但是我不确定如何保存他们的个人资料图片。我尝试在堆栈溢出时搜索问题,但发现的大多数解决方案都太旧了。

func saveUserProfile(){
    let userRefrence = Database.database().reference().child("Users").childByAutoId()

    let userDictionary:[String:String] = ["name":users.name, "email" :users.userEmail]
    self.userRefrence.setValue(userDictionary)
}

1 个答案:

答案 0 :(得分:0)

如果您已经使用Firebase,则需要使用Firebase Storage保存图像。

在这里,我们获取对存储的引用并将图像转换为数据。

let fileName = NSUUID().uuidString
let profileImagesRef = Storage.storage().reference().child("profile_images/\(fileName)")

guard let uploadData = UIImageJPEGRepresentation(image, 0.3) else {
    return
}

然后我们实际上将数据保存到Firebase Storage

profileImagesRef.putData(uploadData, metadata: nil, completion: { (metadata, error) in
    if let error = error {
        return
    }

    // After the image has been successfully uploaded we need to grab its download url

    profileImagesRef.downloadURL(completion: { (downloadURL, error) in
        if let error = error {
            return
        }

        guard let downloadURL = downloadURL else {
            return
        }

        print("successfully fetched download URL: \(downloadURL.absoluteString)")
    })
})

您要将downloadUrl保存到您的用户模型,并在加载个人资料时使用它来下载您的个人资料图片。

您可以在Firebase文档中阅读它。

https://firebase.google.com/docs/storage/ios/download-files

https://firebase.google.com/docs/storage/ios/upload-files