如何删除Firebase存储文件?

时间:2020-04-22 03:20:02

标签: javascript firebase firebase-storage

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

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

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

我在这里遵循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”文件将从存储中删除。

这是在客户端上删除完成后显示文件和Firebase存储的gif。 enter image description here

1 个答案:

答案 0 :(得分:0)

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