2017-06-30 62 views
0

如何将两张图片上传到Firebase存储并一次获得downloadURL的链接...由于某些原因,我的代码只能将一张图片上传到数据库。这是我的代码以及imagePicker代码。请记住,第二张图片是可选的。如何将图片上传到Firebase存储并获取downloadURL链接?

@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)]) 


      } 

     }) 
    } 

}

回答

0

尝试

首先得到参照图像,你想用

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

参考 Generate a download URL SWIFT

0

TR要downloadURL y为存储引用使用不同的名称。例如,对于第二:

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

希望它可以帮助

+0

它仍然只是上传第一downloadURL – Riccardo

相关问题