我有一个允许用户将一些图片保存在Firebase Storage上的应用程序。
我正试图允许用户从应用程序中删除此文件,并因此也从存储中删除它。
我的代码:
if let user = Auth.auth().currentUser{
// user is connect
let storRef = Storage.storage().reference()
let userID = Auth.auth().currentUser?.uid
storRef.child("Planes").child(userID!).child(dataME[indexPath.row].image).delete(completion: nil)
self.tableView.reloadData()
dataME.remove(at: indexPath.row)
}else{
fatalError("⛔️ error ...")
}
现在在这种情况下,我的tableView中的行与我的代码的另一部分完全删除了,数据库引用也被删除了,但是存储不能删除图片...为什么?
非常感谢您的帮助
答案 0 :(得分:0)
检查删除存储时是否出错
let storageRef = Storage.storage().reference().child("Planes").child(userID!).child(dataME[indexPath.row].image)
storageRef.delete { (error) in
if error != nil{
print(error)
return
}
// else proceed
}
答案 1 :(得分:0)
您不应按图像搜索。 而是尝试使用Firebase提供的下载URL
您可以通过单击存储从Firebase仪表板获取URL,然后单击当前映像,然后单击当前映像。
上传图像时,它返回带有URL的回调,则必须将URL保存在数据结构中
上传图片示例:
func uploadImagePic(img1 :UIImage){
var data = NSData()
data = UIImageJPEGRepresentation(img1!, 0.8)! as NSData
// set upload path
let filePath = "\(userid)" // path where you wanted to store img in storage
let metaData = FIRStorageMetadata()
metaData.contentType = "image/jpg"
self.storageRef = FIRStorage.storage().reference()
self.storageRef.child(filePath).put(data as Data, metadata: metaData){(metaData,error) in
if let error = error {
print(error.localizedDescription)
return
}else{
//store downloadURL
let downloadURL = metaData!.downloadURL()!.absoluteString
data[index].downloadURL = downloadURL
}
}
}
// delete example
let storage = Storage.storage()
let url = data[index].downloadURL
let storageRef = storage.reference(forURL: url)
storageRef.delete { error in
if let error = error {
print(error)
} else {
// File deleted successfully
}
}