You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 01:52:31