将图像上传到Firebase存储和数据库
发布于 2021-01-31 23:34:15
我想将图像的下载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)
}
}
}
关注者
0
被浏览
62
1 个回答
-
像这样组织您
upload
和save
func: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 ]) } }
希望能帮助到你
推荐阅读
-
将图像上传到SQL数据库
2021-06-15 关注 0 浏览89 1答案
-
如何使用PHP代码将图像上传到MySQL数据库
2021-02-02 关注 0 浏览117 1答案
-
如何使用PHP代码将图像上传到MySQL数据库
2021-02-02 关注 0 浏览222 1答案
-
我应该将图像上传到Cloud Firestore或Firebase Storage吗?
2021-01-31 关注 0 浏览135 1答案
-
将图像存储在 MongoDB 数据库中
2022-07-28 关注 0 浏览10 1答案
-
如何从PHP表单将图像上传到Google云端存储?
2021-03-12 关注 0 浏览86 1答案
-
将图像存储到数据库Blob;从数据库检索到Picturebox
2021-02-02 关注 0 浏览136 1答案
-
将“画布”图像数据上传到服务器
2021-02-02 关注 0 浏览81 1答案
-
Django:存储图像数据库
2021-01-29 关注 0 浏览69 1答案
-
如何仅将图像路径(URL)存储在数据库中而不是图像本身?
2021-02-01 关注 0 浏览63 1答案