【问题标题】:Can't download a picture url from FirebaseStorage to FirebaseDatabase - Swift - metadata.downloadURL() not recognized anymore无法将图片 url 从 FirebaseStorage 下载到 FirebaseDatabase - Swift - metadata.downloadURL() 不再被识别
【发布时间】:2018-07-21 18:08:56
【问题描述】:

我正在尝试将图片上传到 Firebase 并下载带有元数据的 URL,我尝试了多种方法来修复它,但似乎无法获得它。我已成功将图像上传到存储,但无法获取 url 并将其发送到数据库。这是我到目前为止的代码。有人可以帮我理解如何获取网址吗?

这是我的代码...

    //FIREBASE CODE

    @IBAction func postButtonPressed(_ sender: Any) {

        if self.lost {
            self.sendDataToDatabase(address: self.address.text!, breed: self.breed.text!, phone: self.phone.text!, lostfound: "lost")
        }

        else {
            self.sendDataToDatabase(address: self.address.text!, breed: self.breed.text!, phone: self.phone.text!, lostfound: "found")
        }

        ProgressHUD.show("En Proceso...")
        let storage = Storage.storage()
        let storageRef = storage.reference()
        let photoIdString = "\(NSUUID().uuidString).jpg"
        let imageReference = storageRef.child("posts").child(photoIdString)
        if let imageData = UIImageJPEGRepresentation(selectedImage, 0.7) {
            let metaData = StorageMetadata()
            metaData.contentType = "images/jpg"
            _ = imageReference.putData(imageData, metadata: metaData) { (metadata, error) in
             storageRef.downloadURL(completion: { (url, error) in

                if error != nil {
                    print(error)
                    return
                }
                //Remember you still need to get the photoURL!

            })

            } } else {
            ProgressHUD.showError("Tienes que subir una foto...")
        }
                                                    }

【问题讨论】:

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


    【解决方案1】:

    这就是我设法解决自己问题的方法!

     @IBAction func postButtonPressed(_ sender: Any) {
    
      let storage = Storage.storage()
        let storageRef = storage.reference()
        let photoIdString = "\(NSUUID().uuidString).jpg"
        let imageReference = storageRef.child("posts").child(photoIdString)
        if let imageData = UIImageJPEGRepresentation(selectedImage, 0.7) {
            imageReference.putData(imageData).observe(.success) { (snapshot) in
            imageReference.downloadURL(completion: { (url, error) in
    
                if let downloadUrl = url {
    
                    let directoryURL : NSURL = downloadUrl as NSURL
                    let urlString:String = directoryURL.absoluteString!
                   self.sendDataToDatabase(photoUrl: urlString)
                }
                    else {
                    print("couldn't get profile image url")
                    return
                }
                })}
    

    快速说明 sendDataToDatabase 是我使用 setValue 方法将数据发送到 Firebase 的函数。

    【讨论】:

      猜你喜欢
      • 2021-11-09
      • 2017-07-20
      • 2020-08-03
      • 1970-01-01
      • 2016-09-22
      • 1970-01-01
      • 2021-07-22
      • 2020-09-26
      • 1970-01-01
      相关资源
      最近更新 更多