【问题标题】:How to save multiple images to firebase?如何将多个图像保存到firebase?
【发布时间】:2019-01-23 16:48:03
【问题描述】:

目前我有一个应用程序,当用户拍照时,它会自动保存在存储中,然后我将一个 URL 保存到存储中的图像。但是每当我添加新图像时,它只会将旧图像更改为新图像。我想追加新的。最终目标是让用户能够将他拍摄的一系列图像保存到他的帐户下的 firebase。

下面是我保存用户拍摄图像的代码:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

        if let userPickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {

//            let imageToUse = PhotoArray()

//            let data = UIImagePNGRepresentation(userPickedImage) //here convert to data

            PhotoArray.sharedInstance.photosArray.append(userPickedImage)  //append converted data in array

            //                do {
            //                    try realm.write {
            //                        realm.add(imageToUse)
            //                    }
            //                } catch {
            //                    print(“error adding image to array\(error)“)
            //                }

            imageView.image = userPickedImage
//-----------------------------//
            //Create a reference to the image
            let imageRef = Storage.storage().reference().child("image.jpg")

            // Get image data
            if let uploadData = UIImagePNGRepresentation(userPickedImage) {

                // Upload image to Firebase Cloud Storage
                imageRef.putData(uploadData, metadata: nil) { (metadata, error) in
                    guard error == nil else {
                        // Handle error
                        return
                    }
                    // Get full image url
                    imageRef.downloadURL { (url, error) in
                        guard let downloadURL = url else {
                            // Handle error
                            return
                        }

                        // Save url to database
                        Firestore.firestore().collection("images").document("myImage").setData(["imageUrl" : downloadURL.absoluteString])
                    }
                }
            }
//-----------------------------//
        }
//        print(PhotoArray().photosArray.count)
        imagePicker.dismiss(animated: true, completion: nil)
    }

【问题讨论】:

    标签: ios swift image firebase firebase-storage


    【解决方案1】:

    以下是我如何使用 Firebase 存储保存多张图片的一些小插曲。我调用了 uploadProfileImage() 两次并将 NSUUID().uuidString 设置在存储路径中,因此基本上在每个实例上调用该函数,调用时间几乎没有什么不同并且不会被覆盖:)

    @IBAction func saveImages(_ sender: Any) {
    
        self.uploadProfileImage(frontImage!) { url in
    
            if url != nil {
                print("success")
    
            } else {
                print("failed!")
            }
    
        }
        self.uploadProfileImage(backImage!) { url in
    
            if url != nil {
                print("success")
    
            } else {
                print("failed!")
            }
    
        }
    
    
        dismiss(animated: false, completion: nil)
    }
    
    func uploadProfileImage(_ image:UIImage, completion: @escaping ((_ url:URL?)->())) {
        guard let uid = Auth.auth().currentUser?.uid else { return }
        let imageTime = NSUUID().uuidString
        let storageRef = Storage.storage().reference().child("users/\(uid)/\(imageTime)")
    
        let imageData = image.jpegData(compressionQuality: 0.75)
    
        let metaData = StorageMetadata()
        metaData.contentType = "image/jpg"
    
        storageRef.putData(imageData!, metadata: metaData) { metaData, error in
            if error == nil, metaData != nil {
    
                storageRef.downloadURL{ url, error in
                    completion(url)
                }
    
            }
            else {
                completion(nil)
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      您无法将图片保存到 Firebase Cloud Firestore。您可以通过访问 Google 并搜索 Firebase Cloud Storage 文档来尝试使用 Firebase Cloud Storage。

      【讨论】:

      • 我想我已经可以了。但正如我的问题所述,它没有按预期工作。你是说这不是个好主意吗?我应该做什么以及如何做?
      • 好吧,我完全不知道,但我猜您应该能够使用 Cloud Storage。如果您只是在 Google 上搜索 Firebase Cloud Storage 文档,他们会告诉您如何使用它。
      猜你喜欢
      • 2021-03-14
      • 2021-04-07
      • 2020-12-18
      • 1970-01-01
      • 2018-11-20
      • 2019-12-05
      • 2019-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多