如何从Firebase Storage获取所有图片下载URL?现有代码无效
Firebase Storage 获取所有图片下载URL的正确方法
现在Firebase Storage已经完全支持批量获取文件的下载URL了,6年前的限制早就不存在了。你的两段代码都有API使用错误,所以无法正常工作,以下是修正后的实现:
正确代码示例
// 初始化存储引用 const mediaRef = ref(storage, 'media'); // 指向你的media文件夹 // 第一步:获取文件夹下所有文件引用 const result = await mediaRef.listAll(); // 注意:listAll是存储引用的方法,不是storage实例的方法 // 第二步:批量获取每个文件的下载URL const urls = await Promise.all(result.items.map(async (itemRef) => { return await getDownloadURL(itemRef); })); console.log(urls); // 所有图片的下载URL数组
你之前代码的问题
- 第一段代码:
mediaRef是存储引用对象,没有items属性,直接调用mediaRef.items.map会报错。 - 第二段代码:
storage.listAll(mediaRef)用法错误,listAll是存储引用的实例方法,应该用mediaRef.listAll()来调用。
替代方案(处理大量文件)
如果你的media文件夹下文件数量超过1000个,listAll会无法返回全部文件,这时需要用分页查询的方式:
const mediaRef = ref(storage, 'media'); let nextPageToken = null; const allUrls = []; do { const result = await mediaRef.list({ maxResults: 1000, pageToken: nextPageToken }); // 批量获取当前页的URL const pageUrls = await Promise.all(result.items.map(item => getDownloadURL(item))); allUrls.push(...pageUrls); nextPageToken = result.nextPageToken; } while (nextPageToken); console.log(allUrls); // 所有文件的下载URL
内容的提问来源于stack exchange,提问作者Habizsabi
相关产品推荐
相关产品推荐

