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 希望能帮助到你 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
