且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在Firebase存储器中存储图像并将链接保存到数据库中?

更新时间:2023-01-06 19:12:49

请根据需要修改您的代码

Please modify your code as required

var imgData: NSData = NSData(data: UIImageJPEGRepresentation((self.img_Photo?.image)!, 0.8)!)
self.uploadProfileImageToFirebase(data: imgData)


func uploadProfileImageToFirebase(data:NSData){
    let storageRef = Storage.storage().reference().child("usersPosts").child("\(uid).jpg")
    if data != nil {
        storageRef.putData(data as Data, metadata: nil, completion: { (metadata, error) in
            if(error != nil){
                print(error)
                return
            }
            guard let userID = Auth.auth().currentUser?.uid else {
                return
            }
            // Fetch the download URL
            storageRef.downloadURL { url, error in
                if let error = error {
                    // Handle any errors
                    if(error != nil){
                        print(error)
                        return
                    }
                } else {
                    // Get the download URL for 'images/stars.jpg'

                    let urlStr:String = (url?.absoluteString) ?? ""
                    let values = ["downloadURL": urlStr]
                    self.addImageURLToDatabase(uid: userID, values: values as [String : AnyObject])
                }
            }
        })
    }

}


func addImageURLToDatabase(uid:String, values:[String:AnyObject]){
    let ref = Database.database().reference(fromURL: "https://exampleapp.firebaseio.com/")
    let usersReference = ref.child("usersPosts").child((Auth.auth().currentUser?.uid)!)

    usersReference.updateChildValues(values) { (error, ref) in
        if(error != nil){
            print(error)
            return
        }
        self.parentVC?.dismiss(animated: true, completion: nil)
    }

}