【发布时间】:2019-03-25 22:32:02
【问题描述】:
我正在尝试将图像上传到 firebase 存储并获取下载 url 以将其保存在数据库中,但我得到一个 nil 值并且函数在检查时返回。我遵循了其他帖子中的文档和解决方案,但我看不出我在哪里弄错了。 功能是:
func uploadImage(completed: @escaping (Bool) -> (),_ image: UIImage ){
print(" ############## UPLOAD STARTED ###########")
// let stringURL: String?
// guard let uid = Auth.auth().currentUser?.uid else {return} // use the userUid to sign the alert
// Create a root reference
let storageRef = Storage.storage().reference()
// Create a reference to "mountains.jpg"
// let alertsRef = storageRef.child("userAlertImages.jpg")//("user/\(uid)") // change path for userAlertImages path
// Create a reference to 'images/mountains.jpg'
let alertsImagesRef = storageRef.child("Alert Images/userAlertImages.jpg")
// While the file names are the same, the references point to different files
// alertsRef.name == alertsImagesRef.name; // true
// alertsRef.fullPath == alertsImagesRef.fullPath; // false
let imageData = UIImageJPEGRepresentation(image, 0.5)
let metaData = StorageMetadata()
metaData.contentType = " jpeg " // data type
metaData.customMetadata = ["k1": "",
"k2" : " ",
"k3" : "",
"k4" : ""]
alertsImagesRef.putData(imageData! as Data , metadata: metaData) { metaData, error in
if(error != nil){
print(error as Any)
return
}
}
// Fetch the download URL
alertsImagesRef.downloadURL { (url,error) in
guard let downloadURL = url else {
print("@@@@@@@@@@ downloaded url is: \(url) @@@@@@@@@@@@@")
return
}
NewMapViewController.alertImageURL = (url?.absoluteString) ?? ""
// NewMapViewController.alertImageURL = (downloadURL)
print("######### url is:\(String(describing: url)) #########")
completed(true)
// self.postAlertNotification()
self.tapCounter = 0
self.performSegue(withIdentifier: "chooseIconSegue", sender: self)
}
}
你能看出哪里出错了吗? 非常感谢。
【问题讨论】:
-
首先,您的问题是您将图像保存到同一个存储链接。其次,我们甚至不知道您在 Firebase 存储中的文件结构。
-
@El 番茄。到目前为止,文件路径就像保存行中的路径一样。正如文件路径所建议的那样,Alert Images 是包含名为 userAlertImages 的内部图片的文件夹名称。为什么会出现问题?我仍然必须在图片名称中添加一个随机数以使其唯一,或者每次我知道时我都会覆盖..问题是关于获取我刚刚上传面团的图片的 url.. 文件结构目前非常基本. userAlertImages 是顶级文件夹。希望这会有所帮助。
标签: ios swift firebase firebase-storage