swift – 将图像上传到Firebase存储和数据库
发布时间:2020-12-14 02:27:18 所属栏目:百科 来源:网络整理
导读:我想将图像的下载URL放入Firebase数据库.我可以将图像上传到存储中,但我无法弄清楚如何使用“帖子”的其余部分将URL放入我的数据库. @IBOutlet weak var titleText: UITextField!@IBOutlet weak var authorText: UITextField!@IBOutlet weak var mainText: U
我想将图像的下载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 希望能帮助到你 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |