我在将图像上传到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都为零,但这似乎不是问题(这些都不是零)。