【问题标题】:How to upload the profile link to firebase database如何将配置文件链接上传到 Firebase 数据库
【发布时间】:2020-01-07 04:40:02
【问题描述】:

当我的“ProfileImageuUrl”出现在 firebase 数据库中时,缺少指向个人资料图像的链接,这导致我的用户个人资料发生故障,因为其中没有链接,所以图像不会显示firebase 数据库如何将我的代码重构到这个问题

if let AuthData = AuthDataResult {
                print(AuthData.user.email)
                let dict : Dictionary < String, Any> = [
                    "uid": AuthData.user.uid,
                    "email": AuthData.user.email,
                    "ProfileImageUrl": "",
                    ]
             if let profileImge = self.selectedImage, let imageData = profileImge.jpegData(compressionQuality: 0.1) {
             let StorageRef = Storage.storage()
                    .reference(forURL: "gs://tunnel-vision-458d6.appspot.com/")
                let storageProfileRef = StorageRef.child("profileImage").child(AuthData.user.uid)

                let metadata = StorageMetadata()
                metadata.contentType = "profileImage.jpg"
                storageProfileRef.putData(imageData, metadata: metadata) { (storageMetadata, error) in
                    if error != nil {
                    return
                }

                    storageProfileRef.downloadURL { (url, error) in
                        if let metaImageUrl = url?.absoluteString {
                        print(metaImageUrl)
                    }


                        Database.database().reference().child("users").child(AuthData.user.uid).updateChildValues(dict, withCompletionBlock: {
                            (error,ref) in
                            if error == nil {
                                print("Done")

                            }

【问题讨论】:

    标签: ios swift firebase firebase-realtime-database user-profile


    【解决方案1】:

    您正在为 dict 中的 ProfileImageUrl 分配一个空字符串:

    let dict : Dictionary < String, Any> = [
        "uid": AuthData.user.uid,
        "email": AuthData.user.email,
        "ProfileImageUrl": "",
    ]
    

    而且你以后永远不会更新它。 dict 的写法与您在此处看到的完全一样。在写之前给它分配你想要的值。

    【讨论】:

    • 我是分配 Firebase 存储 url 还是分配给它的照片图像文件夹
    【解决方案2】:

    你需要

    1- 将dict 设为变量

                var dict : Dictionary < String, Any> = [
                    "uid": AuthData.user.uid,
                    "email": AuthData.user.email 
                    ]
    

    2- 为ProfileImageUrl 分配一个值,并在storageProfileRef.downloadURL 的回调中嵌入更新值,其中您有一个图像的网址

                  storageProfileRef.downloadURL { (url, error) in
                        if let metaImageUrl = url?.absoluteString {
                        print(metaImageUrl)
                         dict["ProfileImageUrl"] = metaImageUrl
                        Database.database().reference().child("users").child(AuthData.user.uid).updateChildValues(dict, withCompletionBlock: {
                            (error,ref) in
                            if error == nil {
                                print("Done")
    
                            }
                        }
                   }
              }
    

    【讨论】:

    • firebase 存储链接显示在数据库中,但是当您单击链接时没有出现图像@sh-khan
    • 链接扩展名是jpg
    • 我正在设置个人资料屏幕,用户注册的个人资料图片没有出现在他们的个人资料中,因为它没有出现在 firebase 存储中,它说 safari 无法打开指定地址,这段代码让我失望了@sh-khan
    • 什么链接扩展@sh-khan
    猜你喜欢
    • 2018-04-25
    • 2017-08-07
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 1970-01-01
    相关资源
    最近更新 更多