【问题标题】:Every User has the same profile picture (Firebase / Swift)每个用户都有相同的个人资料图片(Firebase / Swift)
【发布时间】:2021-06-11 12:45:35
【问题描述】:

下午好社区,

在我的 Swift 应用中,每个用户都有相同的个人资料图片,该图片已上传到 Firebase 存储。我怎样才能改变它,让每个用户都有自己独特的头像?

我如何上传图片:

   @IBAction func UploadImage(_ sender: Any) {
        
        
        let picker = UIImagePickerController()
        
        picker.sourceType = .photoLibrary
        
        picker.delegate = self
        picker.allowsEditing = true
        present(picker, animated: true)
        
        
        
    }
    
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        picker.dismiss(animated: true, completion: nil)
        guard let image = info[UIImagePickerController.InfoKey.editedImage] as? UIImage else {
            return
        }
        guard let imageData = image.pngData() else {
            return
        }
        
    
        
            storage.child("images/file.png").putData(imageData, metadata: nil, completion: { _, error in
            guard error == nil else {
                print("Failed to upload")
                return
            }
            
            
            
            
        })
        
        
    }

    
    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        picker.dismiss(animated: true, completion: nil)
    }
    
    
}

我如何下载它们:

func downloadImages() {
    
    let storageRef = Storage.storage().reference()
    
    
    
    
    // Reference to an image file in Firebase Storage
    let reference = storageRef.child("images/file.png")

    // UIImageView in your ViewController
    let imageView: UIImageView = self.imageView

    // Placeholder image
    let placeholderImage = UIImage(named: "placeholder.jpg")

    // Load the image using SDWebImage
    imageView.sd_setImage(with: reference, placeholderImage: placeholderImage)
        
        
   
}

感谢您的帮助!!!我在这里没有发现这个问题...

编辑: 为每个用户下载图片

 if Auth.auth() != nil {
        let storageRef = Storage.storage().reference()
        
        
        
        
        // Reference to an image file in Firebase Storage
        let reference = storageRef.child("images/"+Auth.auth().currentUser!.uid+".png")

        // UIImageView in your ViewController
        let imageView: UIImageView = self.imageView

        // Placeholder image
        let placeholderImage = UIImage(named: "placeholder.jpg")

        // Load the image using SDWebImage
        imageView.sd_setImage(with: reference, placeholderImage: placeholderImage)
            
            
       
    }

【问题讨论】:

    标签: swift firebase firebase-storage


    【解决方案1】:

    您的所有用户现在都在 Firestore 存储中写入完全相同的文件:

    storage.child("images/file.png").putData(imageData, metadata: nil, completion: { _, error in
    

    要为每个用户提供一个唯一的文件,您需要在 Storage 中的文件路径中包含一些可以识别用户的内容。通常,您将在 Firebase 身份验证中使用用户的 UID。

    所以你会 get the signed in user 然后在路径中使用他们的 UID:

    if Auth.auth().currentUser != nil {
        storage.child("images/"+Auth.auth().currentUser.uid+"+.png").putData(imageData, metadata: nil, completion: { _, error in
            ...
    }
    

    在阅读方面,您需要list the files,并分别显示它们。

    【讨论】:

    • 好的,如果我为每个用户帐户上传一张图片,它现在工作正常;)我强制使用 currentUser (Auth.auth().currentUser!.uid),因为 Xcode 正在抱怨。如果我现在想下载它,它就不能正常工作。我编辑了帖子。
    • 如果您在应用此答案中的解决方案后遇到新问题,请针对新问题打开一个新问题。
    • 现在我明白了,我会选择您的答案作为已解决;)如果我想查看更改,我每次都可以删除并重新安装应用程序。有没有办法及时得到这个?我应该为此添加一个新主题吗?
    猜你喜欢
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 2020-11-02
    • 2017-05-04
    • 2018-07-16
    • 1970-01-01
    • 2021-04-04
    • 2017-11-16
    相关资源
    最近更新 更多