我正在使用Xcode 10,并且此方法将在应用程序中选择的照片上传到Firebase存储。它正在成功上传照片,但是,我试图将下载URL获取并在同一屏幕上填充标签。
我尝试了元数据。downloadurl,但这引发了一个错误元数据,不再识别xcode 10中的downloadurl。
这是我的功能...
func uploadPhoto(completion: @escaping (_ url: String?) -> Void) {
let photoName = NSUUID().uuidString
let storageRef = Storage.storage().reference().child("photoURL").child("(photoName).jpg")
let photo = self.photoImageView.image!
if let uploadData = photo.jpegData(compressionQuality: 0.75) {
storageRef.putData(uploadData, metadata: nil) { (metadata, error) in
guard metadata != nil else {
// Uh-oh, an error occurred!
return
}
// Metadata contains file metadata such as size, content-type.
//let size = metadata?.size
// You can also access to download URL after upload.
storageRef.downloadURL { (url, error) in
guard url != nil else {
// Uh-oh, an error occurred!
return
}
// Metadata contains file metadata such as size, content-type, and download URL.
// THROWS ERROR
// let downloadURL = metadata.downloadURL
// MY ATTEMPT
var downloadURL = StorageReference.downloadURL(self.refStorage)
completion(downloadURL = self.urlLabel.text)
}
}
}
}
您需要
storageRef.put(uploadData, metadata: nil, completion: { (metadata, error) in
if(error != nil){
print(error)
return
}
storageRef.downloadURL { url, error in
if let error = error {
// Handle any errors
if(error != nil){
print(error)
}
} else {
// Get the download URL for 'images/stars.jpg'
let urlStr:String = (url?.absoluteString) ?? ""
print(urlStr)
}
}
})