我想将图像的下载URL放入Firebase数据库.我可以将图像上传到存储中,但我无法弄清楚如何使用“帖子”的其余部分将URL放入我的数据库.
@IBOutlet weak var titleText: UITextField! @IBOutlet weak var authorText: UITextField! @IBOutlet weak var mainText: UITextView! @IBOutlet weak var dateText: UITextField! @IBOutlet weak var myImageView: UIImageView! var ref:FIRDatabaseReference? override func viewDidLoad() { super.viewDidLoad() ref = FIRDatabase.database().reference() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } @IBAction func uploadImage(_ sender: Any) { let image = UIImagePickerController() image.delegate = self image.sourceType = UIImagePickerControllerSourceType.photoLibrary image.allowsEditing = false self.present(image,animated: true) { //after its completed } } @objc(imagePickerController:didFinishPickingMediawithInfo:) func imagePickerController(_ picker: UIImagePickerController,didFinishPickingMediawithInfo info: [String : Any]) { if let image = info[UIImagePickerControllerOriginalImage] as? UIImage { myImageView.image = image } else { //error } self.dismiss(animated: true,completion: nil) let storageRef = Firstorage.storage().reference().child("myImage.png") if let uploadData = UIImagePNGRepresentation(self.myImageView.image!){ storageRef.put(uploadData,Metadata: nil,completion: { (Metadata,error) in if error != nil { print("error") return } print(Metadata) //how do I put the download URL in the Metadata into my database } ) } } @IBAction func addPost(_ sender: Any) { if self.titleText.text != "" && self.authorText.text != "" && self.mainText.text != "" && self.dateText.text != "" { ref?.child("Posts").childByAutoId().setValue(["Title": titleText.text,"Article": mainText.text,"Author": authorText.text,"Date": dateText.text,"myImageURL": myImageURL]) //the myImageURL part is where I get an error self.performSegue(withIdentifier: "post",sender: self) } else{ let alertController = UIAlertController(title: "Oops!",message: "Field left blank",preferredStyle: .alert) let defaultAction = UIAlertAction(title: "Ok",style: .cancel,handler: nil) alertController.addAction(defaultAction) self.present(alertController,animated: true,completion: nil) } } }
组织您的上传并保存这样的功能:
func uploadMedia(completion: @escaping (_ url: String?) -> Void) { let storageRef = Firstorage.storage().reference().child("myImage.png") if let uploadData = UIImagePNGRepresentation(self.myImageView.image!) { storageRef.put(uploadData,Metadata: nil) { (Metadata,error) in if error != nil { print("error") completion(nil) } else { completion((Metadata?.downloadURL()?.absoluteString)!)) // your uploaded photo url. } } }
接下来只需连接到FIRDatabase并将其保存到您的节点.
@IBAction func addPost(_ sender: Any) { if self.titleText.text != "" && self.authorText.text != "" && self.mainText.text != "" && self.dateText.text != "" { uploadMedia() { url in guard let url = url else { return } ref?.child("Posts").childByAutoId().setValue([ "Title" : titleText.text,"Article" : mainText.text,"Author" : authorText.text,"Date" : dateText.text,"myImageURL" : url! ]) } }
您还可以查看有关上载数据和将URL保存到数据库的my answer
希望能帮助到你
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。