将多个图像上传到Firebase

请注意,我是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总体上对我来说是一个新概念。

h3251300 回答:将多个图像上传到Firebase

如果我正确理解了您的问题,我想您是在询问如何将图像上传到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并将其保存到节点。请注意,这里的节点位于我制作的结构下,因此您必须根据您的节点strucutre调整此方法,或者上载您的strucutre并编辑答案。

@IBAction func addPost(_ sender: Any) {


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

您也可以参考this进行进一步说明

本文链接:https://www.f2er.com/3091052.html

大家都在问