How to store images in firebase storage and save link to them on database?

前端 未结 2 1662
迷失自我
迷失自我 2020-12-12 07:36

I have looked around for an answer to this. The closest I got is here, however, It does not exactly answer my question. That being, how to store a reference to images which

2条回答
  •  心在旅途
    2020-12-12 08:08

    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)
        }
    
    }
    

提交回复
热议问题