相同的功能,不能完成一件事情,但可以完成另一件事

时间:2019-09-19 17:05:34

标签: swift firebase-storage

我在将图像上传到Firebase存储时遇到问题。我有一个功能是:

func uploadImageToFirebase(_ imageToUpload: UIImage? , completion: @escaping((_ url: String?)->())){
    let imageName = UUID().uuidString
    let storageRef = Storage.storage().reference()
    let imagesRef = storageRef.child(imageName)
    guard let uploadImage = imageToUpload else { return }
    guard let uploadData = uploadImage.jpegData(compressionQuality: 0.8) else { return }

    let metaData = StorageMetadata()
    metaData.contentType = "image/jpeg"

    imagesRef.putData(uploadData, metadata: metaData) { (metadata, err) in

        if err == nil && metadata != nil {
            imagesRef.downloadURL(completion: { (url, err) in
                guard let downloadUrl = url else { return } // TODO: Tell users there is a problem instead of just return
                let urlString = downloadUrl.absoluteString
                completion(urlString)
            })
        }else {
            print(err?.localizedDescription)
        }
        completion(nil)
    }
}

如果我已经在自己的应用中创建了一个用户,并且尝试创建并上传新帖子,则我选择的图像确实会上传到Firebase存储中,并且我获得了该URL以便可以显示它。 尝试创建新用户并为其选择个人资料图片时,该图片不会上传。我正在调用完全相同的方法。 我收到此错误:

err Error?  domain: "FIRStorageErrorDomain" - code: 18446744073709538595    0x00006000026dced0

上传“帖子图片”时不会发生这种情况。

我认为也许其中之一:metaData,uploadData或imageToUpload都为零,但这似乎不是问题(这些都不是零)。

0 个答案:

没有答案