简体   繁体   English

Firebase 存储删除uidd镜像

[英]Firebase storage delete uidd image

I'm trying to delete an uuid image from Firebase Storage.我正在尝试从 Firebase 存储中删除 uuid 图像。 When I add an uuid image, I can delete it from tableview but not from Firebase Storage.当我添加一个 uuid 图像时,我可以从 tableview 中删除它,但不能从 Firebase 存储中删除它。 If I add an image without uuid, I can delete it with image name without any problem.如果我添加一个没有 uuid 的图像,我可以用图像名称删除它,没有任何问题。 My problem is how to get uuid image name as a reference.我的问题是如何获取 uuid 图像名称作为参考。

Here's my code for upload image(in AddViewController) in Firebase Storage:这是我在 Firebase 存储中上传图像的代码(在 AddViewController 中):

@IBAction func saveButtonClicked(_ sender: Any) {

    // STORAGE

    let storage = Storage.storage()
    let storageReference = storage.reference()

    let mediaFolder = storageReference.child("media")

    let userUid = Auth.auth().currentUser?.email!

    if let data = childImageView.image?.jpegData(compressionQuality: 0.2) {

        let uuid = UUID().uuidString

        let imageReference = mediaFolder.child("\(userUid!)/\(uuid).jpg")

        imageReference.putData(data, metadata: nil) { (metadata, error) in
            if error != nil {
                self.makeAlert(titleInput: "Error!", messageInput: error?.localizedDescription ?? "Error")
            } else {

                imageReference.downloadURL { (url, error) in
                    if error == nil {
                        let imageUrl = url?.absoluteString

Here's my code for delete image (in mainViewController) in Firebase Storage:这是我在 Firebase 存储中删除图像(在 mainViewController 中)的代码:

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {

        // STORAGE

        let storage = Storage.storage()
        let storageReference = storage.reference()

        let userUid = Auth.auth().currentUser?.email!
        let uuid = UUID().uuidString

        let mediaFolder = storageReference.child("media").child("\(userUid!)/\(uuid).jpg")

        mediaFolder.delete { (error) in
            if let error = error {
                print("Image Error")
            } else {
                print("Image Deleted")
            }
        }

UUID is unique and creating new UUID (as you do when you call UUID() ) is generating a new one (with misery chance of collision). UUID 是唯一的,并且创建新的 UUID(就像您在调用UUID()时所做的那样)正在生成一个新的 UUID(很可能发生碰撞)。 You should hold object identifier (its UUID) inside your cell model您应该在单元格 model 中保存 object 标识符(其 UUID)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM