【问题标题】:How To Fetch Multiple Uploaded Images By Current User - Firebase and Swift如何获取当前用户上传的多个图像 - Firebase 和 Swift
【发布时间】:2021-07-17 07:08:21
【问题描述】:

我想知道获取用户在我的应用上上传的图片的最佳方式是什么。目前,图像都保存在存储中。我认为这不是正确的方法,因为它与 userId 无关?也许,我需要将用户媒体保存在实时数据库中以获取他们的图像?如果有人可以帮助我,那将不胜感激。 谢谢。

 guard let image = imageView.image, let data = image.jpegData(compressionQuality: 1.0)
        else {

            print("something went wrong")
            return
    
        }
        
        let imageName = UUID().uuidString
        let imageReference = Storage.storage().reference().child(MyKeys.imagesFolder).child(imageName)
        
        imageReference.putData(data, metadata: nil) { (metadata, err) in
            
            
            if let err = err {
                print ("Error")
                return
            }
            
            imageReference.downloadURL(completion: { (url, err) in
                    
                if let err = err {
                    print ("Error")
                    return
                }
                
                guard let url = url else {
                    print ("Error")
                    return
                }
                
                let dataReference = Firestore.firestore().collection(MyKeys.imagesCollection).document()
                
                let documentUid = dataReference.documentID
                                                
                let urlString = url.absoluteString
                
                let data = [
                    MyKeys.uid:documentUid,
                    MyKeys.imageUrl: urlString,
                    MyKeys.imageTitle: self.imageTitle.text!,

                ] as [String : Any]
                
                dataReference.setData(data) { (err) in
                    if let err = err {
                        print ("Error")
                        return
                    }
             
                }
                
            })
            
            }
    }

【问题讨论】:

  • 可能不想将图像存储在实时数据库中。您可能想要做的是将图像存储在 Firebase 存储中,并确保它们在图像引用路径中具有用户 ID (Auth.auth().currentUser?.uid)(例如:\(uid)/\(filename))跨度>
  • @jnpdx 谢谢!我现在已将图像保存为 Userid.Imagetitle - 它确实使它更容易。再次感谢:)

标签: swift firebase firebase-realtime-database firebase-storage


【解决方案1】:

一种非常常见的模式是将用户 ID 存储在 Firebase 存储中的图像路径中。例如,

let imageName = //...
guard let uidString = Auth.auth().currentUser?.uid else {
  return
}
let imageRefPath = "\(uidString)/\(imageName)"

【讨论】:

  • 超级答案!我想补充一点,一旦构建了图像 url 并将图像保存在存储中,该 url(这是图像的引用)将存储在实时数据库或 Firestore 中。 OP 似乎正在这样做,但只是想添加该注释以确保完整性。
  • 是的!这对我帮助很大,从那时起我就可以存储它,而且更容易!非常感谢:)
猜你喜欢
  • 1970-01-01
  • 2020-03-03
  • 1970-01-01
  • 2020-05-30
  • 2021-07-17
  • 2022-01-24
  • 1970-01-01
  • 2018-09-26
  • 1970-01-01
相关资源
最近更新 更多