【问题标题】:IOS Firebase storage file upload - object does not existIOS Firebase存储文件上传-对象不存在
【发布时间】:2018-08-13 16:02:02
【问题描述】:

我正在尝试使用 Firebase on IOS (Swift) 将用户选择的图像文件上传到 firebase 存储。 我已经对用户进行了身份验证,所以这不是问题。 您可以在下面看到我正在尝试使用的视图控制器,但是当它尝试上传图像时,我收到一条错误消息:

对象图像/vesVLmkqS2cCLQTJOjv9CFe8mh22/0524729A-855E-4E63-8C11-50F4C4B1A905 不存在。

(你可以在代码中看到这条路径的中间部分是用户uid,所以我肯定有一个认证用户)

在测试“myimage.png”之类的值之前,我曾尝试简化此路径,但没有帮助,我遇到了同样的错误。

我已经尽我所能,请帮助我,因为我在 firebase 文档中找不到任何相关内容。

下面的代码会在视图加载时自动打开图像选择器。如果用户选择一个图像,我们将其设置为图像视图。当用户单击上传按钮时,控制器会尝试将文件上传到 Firebase 存储。

import UIKit
import Firebase

class ShareViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

    @IBOutlet weak var imageView: UIImageView!

    let imagePicker = UIImagePickerController()

    override func viewDidLoad() {
        super.viewDidLoad()
        imagePicker.delegate = self
        imagePicker.allowsEditing = false
        imagePicker.sourceType = .photoLibrary

        present(imagePicker, animated: true, completion: nil)
    }

    @IBAction func onPictureTapped(_ sender: Any) {
        present(imagePicker, animated: true, completion: nil)
    }

    @IBAction func onUploadClicked(_ sender: Any) {
        if let pickedImage = imageView.image, let imageData = UIImagePNGRepresentation(pickedImage) {
            let storageRef = Storage().reference()
            let imageRef = storageRef.child("images/\(Auth.auth().currentUser!.uid)/\(NSUUID().uuidString)")

            imageRef.putData(imageData, metadata: nil) { (metadata, error) in
                if error != nil {
                    NSLog(error!.localizedDescription)
                }

                self.navigationController?.popToRootViewController(animated: true)
            }
        }
    }

    internal func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
            imageView.contentMode = .scaleAspectFit
            imageView.image = pickedImage
        }

        self.dismiss(animated: true, completion: nil)
    }
}

【问题讨论】:

  • 您能分享您的 Firebase 存储路径吗?
  • firebase 存储现在什么都没有,完全是空的。 (但我也尝试在根目录中创建一个文件,路径为“testimage.jpg”,但我得到了同样的错误)

标签: ios swift firebase firebase-storage


【解决方案1】:

好的,我发现了问题:

// Instead of this:
Storage().reference()

// You need to use this
Storage.storage().reference()

这太荒谬了,没有警告,应用程序也不会崩溃。很烦人,我花了至少5个小时才找到

【讨论】:

  • 多么糟糕的命名。谷歌真丢脸。应该改为Storage.default
  • 我已经使用了第二个,但我也遇到了同样的错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-13
  • 1970-01-01
  • 1970-01-01
  • 2020-04-22
  • 2021-10-28
  • 2021-12-02
相关资源
最近更新 更多