列出 Firebase 存储 v9 中的所有文件

Posted

技术标签:

【中文标题】列出 Firebase 存储 v9 中的所有文件【英文标题】:list all files in firebase storage v9 【发布时间】:2021-12-18 15:44:17 【问题描述】:

我正在开发一个页面并使用 firebase 存储作为文件存储。我尝试在 firebase 开发人员文档中使用给定的代码,但我似乎无法使其工作。可能是什么问题?

document.getElementById("but").addEventListener('click', e => 

    // Create a reference under which you want to list
    const listRef = ref(storage, 'folder/');
    // Find all the prefixes and items.
    listAll(listRef)
        .then((res) => 
            res.prefixes.forEach((folderRef) => 
                // All the prefixes under listRef.
                // You may call listAll() recursively on them.
            );
            res.items.forEach((itemRef) => 
                // All the items under listRef.
                console.log( getDownloadURL(ref(storage, `folder/$itemRef`)))
            )
        )
);

【问题讨论】:

请阅读 Firebase 文档firebase.google.com/docs/database/web/… “我似乎无法让它工作” 您共享的代码有什么问题?如果有错误,请在您的问题中分享错误消息和堆栈跟踪。如果没有错误,在每一行设置断点并在调试器中运行代码。哪一行是第一个不符合您预期的行? 【参考方案1】:

我不确定您的代码有什么问题,但有一个错误:

res.items.forEach((itemRef) => 
    // All the items under listRef.
    console.log( getDownloadURL(ref(storage, `folder/$itemRef`)))
)

getDownloadURL 函数对服务器执行异步调用,因此您需要使用 awaitthen 来捕获该结果:

res.items.forEach((itemRef) => 
    getDownloadURL(ref(storage, `folder/$itemRef`))
        .then((downloadURL) => 
            console.log(downloadURL);
        );
)

【讨论】:

以上是关于列出 Firebase 存储 v9 中的所有文件的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 存储:列出特定目录中的文件

将图像从 ReactJS 上传到 Firebase v9 存储

将文件上传到 Firebase 云存储时出错:“rules_version = 1 不允许列出存储桶中的对象”

firebase模块的动态加载? (v9)

导入在 Firebase Client v9 (npm) 上不起作用

如何使用 AngularFire 从 FireBase 存储中获取文件列表