【问题标题】:How should I delete a firebase storage file?我应该如何删除 Firebase 存储文件?
【发布时间】:2020-04-22 03:20:02
【问题描述】:

在尝试删除文件后,我收到了删除成功的通知。但是,当我检查存储控制台页面时,文档仍然存在。

如果我手动指定之前上传的文件的名称,那么该文件将被成功删除。

知道我在这里做错了什么吗?它是否与我刚刚上传文件而现在我正在删除它的事实有关?存储引用上是否有某种缓存,我必须再次查询才能知道新文件存在?

我正在关注 Google 在此处提供的文档。 https://firebase.google.com/docs/storage/web/delete-files

这是我的代码

            const storage = firebase.storage();
            const picture = storage.ref().child('images/' + file.name);
              picture
                .delete()
                .then(function () {
                  notification.success({
                    message: 'File Deleted',
                    placement: 'bottomLeft',
                  });
                })
                .catch(function (error) {
                  console.error(error);
                  notification.warning({
                    message: 'There was an error',
                    placement: 'bottomLeft',
                  });
                });

更新

当我说“手动指定文件”时,我的意思是我可以做到这一点

const picture = storage.ref().child('images/alreadyUploadedImage.png');

然后运行相同的代码来删除。这就是我询问缓存的原因,因为似乎如果我通过更改代码中的此文本来重新加载浏览器会话,我现在可以删除文件。此外,这不适用于我刚刚上传的文件(在我刷新浏览器之前)。如果我将代码中的名称更改为“images/image.png”,然后上传具有该名称的图像,然后立即尝试将其删除,则它不起作用。但是,如果我随后刷新浏览器并添加另一张图片,然后删除该图片,则“image.png”文件将从存储中消失。

这是一个 gif,显示了客户端上删除完成后的文件和 firebase 存储。

【问题讨论】:

  • 您是否启用了对象版本控制?也许它已成功删除,但您看到的是以前的版本?如果不是这样,您能否详细说明手动指定文件注释?
  • 您是否刷新了控制台页面以查看文件是否真的消失了?控制台不像 Firestore 和实时数据库那样实时显示更新。
  • @Noel 对象版本控制已在此存储桶上暂停并且从未开启。
  • @DougStevenson 我每次都会刷新该页面,但文件仍然存在。

标签: javascript firebase firebase-storage


【解决方案1】:

原来我在调用 delete 方法后又调用了 put 方法。我正在使用 AntD 和具有 getValueFromEvent={normFile} 的 Upload 组件。每次上传或删除文件时都会调用这个“normFile”函数。因此,如果事件是 event.status === 'removed',我只需要从该函数返回。

【讨论】:

    猜你喜欢
    • 2017-05-24
    • 1970-01-01
    • 2022-01-02
    • 2019-06-03
    • 2021-07-07
    • 2017-03-24
    • 2021-07-02
    • 2019-06-07
    • 2018-07-09
    相关资源
    最近更新 更多