Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何将图像上载到Firebase存储并获取下载URL的链接?_Ios_Swift_Firebase_Firebase Realtime Database_Firebase Storage - Fatal编程技术网

Ios 如何将图像上载到Firebase存储并获取下载URL的链接?

Ios 如何将图像上载到Firebase存储并获取下载URL的链接?,ios,swift,firebase,firebase-realtime-database,firebase-storage,Ios,Swift,Firebase,Firebase Realtime Database,Firebase Storage,如何将两个图像上载到Firebase存储并立即获取下载URL的链接。。。由于某些原因,我的代码只能将一个图像上载到数据库。这是我的代码和imagePicker代码。请记住,第二个图像是可选的 @IBAction func pickImage1(_ sender: Any) { let image = UIImagePickerController() image.delegate = self image.sourceType = UIImagePickerContr

如何将两个图像上载到Firebase存储并立即获取下载URL的链接。。。由于某些原因,我的代码只能将一个图像上载到数据库。这是我的代码和imagePicker代码。请记住,第二个图像是可选的

@IBAction func pickImage1(_ sender: Any) {


    let image = UIImagePickerController()
    image.delegate = self
    image.sourceType = UIImagePickerControllerSourceType.photoLibrary
    image.allowsEditing = false
    selected = 1

    self.present(image, animated: true)
}

//Add didFinishPickingMediaWithInfo here
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
        if selected == 1 {
            myImageView1.image = image
        } else {
            myImageView2.image = image
        }
    }
    else {
        //error
    }
    self.dismiss(animated: true, completion: nil)
}


@IBAction func pickImage2(_ sender: Any) {

       let image2 = UIImagePickerController()
    image2.delegate = self
    image2.sourceType = UIImagePickerControllerSourceType.photoLibrary
    image2.allowsEditing = false
    selected = 2

    self.present(image2, animated: true)
}




@IBAction func upload(_ sender: Any) {


    if let image1 = myImageView1.image {
        guard let data = UIImagePNGRepresentation(image1) else { return }

        let storageRef = Storage.storage().reference().child("images/\(NSUUID().uuidString)/image.png")
        storageRef.putData(data, metadata: nil, completion: { (metadata, error) in

            if error != nil {
                print("error")
                return

            }


            else {
                let downloadURL = metadata?.downloadURL()?.absoluteString


                self.ref?.child("Posts").childByAutoId().setValue(["Title": self.titleText.text, "Subtitle": self.subtitleText.text, "Article": self.articleText.text, "Author": self.authorText.text, "Date": self.dateText.text, "Tags": self.tagsText.text, "PostType": self.postType.text, "PostStyle": self.postStyle.text, "PostSize": self.postSize.text, "Download URL": (downloadURL)])

             return
            }



        })
    }

    if let image2 = myImageView2.image {
        guard let data = UIImagePNGRepresentation(image2) else { return }

        let storageRef = Storage.storage().reference().child("images/\(NSUUID().uuidString)/image1.png")
        storageRef.putData(data, metadata: nil, completion: { (metadata, error) in
            if error != nil {
                print("error")
                return

            }


            else {
                let downloadURL = metadata?.downloadURL()?.absoluteString
                let downloadURL2 = metadata?.downloadURL()?.absoluteString

                self.ref?.child("Posts").childByAutoId().setValue(["Title": self.titleText.text, "Subtitle": self.subtitleText.text, "Article": self.articleText.text, "Author": self.authorText.text, "Date": self.dateText.text, "Tags": self.tagsText.text, "PostType": self.postType.text, "PostStyle": self.postStyle.text, "PostSize": self.postSize.text, "Download URL": (downloadURL), "Download URL 2": (downloadURL2)])


            }

        })
    }
}试试看

首先获取要使用URL下载的图像的引用

let starsRef = storageRef.child("images/pic.jpg")

// Fetch the download URL
starsRef.downloadURL { url, error in
  if let error = error {
    // Handle any errors
  } else {
    // Get the download URL for 'images/stars.jpg'
  }
}
参考

尝试对存储引用使用不同的名称。例如,第二个:

if let image2 = myImageView2.image {
    guard let data = UIImagePNGRepresentation(image2) else { return }

    let storageRef2 = Storage.storage().reference().child("images/\(NSUUID().uuidString)/image1.png")
    storageRef2.putData(data, metadata: nil, completion: { (metadata, error) in
        if error != nil {
            print("error")
            return
        } else {
            let downloadURL = metadata?.downloadURL()?.absoluteString

            self.ref?.child("Posts").childByAutoId().setValue(["Title": self.titleText.text, "Subtitle": self.subtitleText.text, "Article": self.articleText.text, "Author": self.authorText.text, "Date": self.dateText.text, "Tags": self.tagsText.text, "PostType": self.postType.text, "PostStyle": self.postStyle.text, "PostSize": self.postSize.text, "Download URL": (downloadURL), "Download URL 2": (downloadURL2)])
        }
    })
}

希望有帮助

它仍然只上传第一个下载的URL