0

我有一个应用程序,可将每个用户的个人资料图片存储在Firebase存储中。这是我用来存储个人资料图片的路径:使用他们url.But基于uids访问Firebase存储图像

FIRStorage.storage().reference(forURL: "gs://gsignme-15916.appspot.com").child(user.uid+"/profile_pic.jpg") 

enter image description here enter image description here

我也存储在火力数据库中的图像,当我尝试使用此代码来访问个人资料图片。

if (post["uid"] as? String) != nil { 

       let imageRef = FIRStorage.storage().reference().child((uid)!+"/profile_pic.jpg") 


       imageRef.data(withMaxSize: 25 * 1024 * 1024, completion: { (data, error) -> Void in 
        if error == nil { 

         let image = UIImage(data: data!) 
         cell.UserImg.image = image 

         cell.UserImg.layer.cornerRadius = 10 
         cell.UserImg.clipsToBounds = true 



        }else { 

         print("Error downloading image:") 


        }})} 

而且我改变了用户,图片变成了当前用户的图片,而不是发了帖子的用户。我知道问题在于如何检索图像,但我不确定如何根据不是当前登录用户的uids检索图像。

+0

一个空字符串最终是谁取得包含在帖子的人的UID firebase发布信息? –

+0

如果* uid *是当前用户的id,那么假设您已将海报uid存储为帖子的一部分,您所要做的就是更改* post [“uid”] * – Russell

+0

@Russell我将userpic更改为但它仍然显示当前用户在所有帖子上的图片 – juelizabeth

回答

0

这应该是相当简单 - 尽管你应该增加一些检查,以确保你不与uidPoster

if (post["uid"] as? String) != nil { 
      let uidPoster = post["uid"] as? String 
      let imageRef = FIRStorage.storage().reference().child((uidPoster)!+"/profile_pic.jpg") 


      imageRef.data(withMaxSize: 25 * 1024 * 1024, completion: { (data, error) -> Void in 
       if error == nil { 

        let image = UIImage(data: data!) 
        cell.UserImg.image = image 

        cell.UserImg.layer.cornerRadius = 10 
        cell.UserImg.clipsToBounds = true 



       }else { 

        print("Error downloading image:") 


       }})} 
+0

非常感谢!有效! – juelizabeth