【问题标题】:Uploading multiple images to firebase将多个图像上传到 Firebase
【发布时间】:2019-11-16 07:49:18
【问题描述】:

提醒一下,我是 IOS 开发的新手,尤其是 Swift。我在附加到常规“配置文件”视图控制器的视图控制器中创建了一个“编辑配置文件页面”。在此编辑个人资料视图控制器上,用户可以更改他们的个人资料图片和封面照片。我很难理解如何允许用户在选择图像并单击“保存按钮”后将照片上传到 Firebase,一旦他们单击保存按钮,我希望它上传图像然后将它们重定向到他们的常规配置文件视图。我已经阅读了其他文章并观看了其他教程,但我无法获得成功上传两张图片的结果。到目前为止,这是我的代码,没有任何将图像上传到 firebase 的调用。

import UIKit
import Foundation
import Firebase
import FirebaseDatabase

class NewEditProfileViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

    @IBOutlet weak var imageView1: UIImageView!
    @IBOutlet weak var imageView2: UIImageView!

    var imagePicker = UIImagePickerController()
    var imagePicked = 0

    var selectedImage1: UIImage?

    override func viewDidLoad() {
        super.viewDidLoad()



        imagePicker.delegate = self
        imagePicker.sourceType = .photoLibrary
        imagePicker.allowsEditing = true
    }


    @IBAction func chooseImage1(_ sender: Any) {
        if UIImagePickerController.isSourceTypeAvailable(UIImagePickerController.SourceType.photoLibrary){
            imagePicked = (sender as AnyObject).tag
            present(imagePicker, animated: true)
        }

        }

    @IBAction func chooseImage2(_ sender: Any) {
        if UIImagePickerController.isSourceTypeAvailable(UIImagePickerController.SourceType.photoLibrary){
            imagePicked = (sender as AnyObject).tag
                present(imagePicker, animated: true)
    }

    }

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        let pickedImage = info[UIImagePickerController.InfoKey.editedImage] as? UIImage

        if imagePicked == 1 {
            imageView1.image = pickedImage
        } else if imagePicked == 2 {
            imageView2.image = pickedImage
        }
        dismiss(animated: true)
    }

    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        dismiss(animated: true)
    }

@IBAction func saveButton(_ sender: Any) {
    }


    @IBAction func backButton(_ sender: Any) {
         self.dismiss(animated: true, completion: nil)
        }
    }

感谢您的帮助!就像我说的,Swift 和 Firebase 总体上对我来说是一个新概念。

【问题讨论】:

标签: ios swift firebase firebase-storage


【解决方案1】:

如果我正确理解了您的问题,我认为您是在询问如何根据保存图像的请求将图像上传到 Firebase。我希望即使您没有 IOS 知识,但您有 Firebase 知识来理解下面的答案。

首先更新您的Save / upload 操作如下

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) {


 uploadMedia() { url in 
      guard let url = url else { return }
      ref?.child("Posts").childByAutoId().setValue([
                           "myImageURL" : url
                            ])
     }
  }

您也可以参考this 进一步澄清

【讨论】:

    猜你喜欢
    • 2021-07-03
    • 2021-04-07
    • 2021-10-14
    • 1970-01-01
    • 2018-11-19
    • 2023-03-22
    • 2018-07-03
    • 1970-01-01
    • 2019-06-13
    相关资源
    最近更新 更多