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

Firebase Storage如何获取/列出所有文件夹?

如何列出Firebase Storage中的所有“文件夹”

Firebase Storage 本质是对象存储服务,没有真正意义上的文件夹——所谓的“文件夹”其实是文件路径中的前缀(比如images/avatar/这样的路径段)。要列出这些“文件夹”,可以通过listAll()方法获取当前目录下的所有前缀,具体实现如下:

Web(JavaScript)

// 获取Storage根目录引用
const storageRef = firebase.storage().ref();

// 列出根目录下的所有子文件夹和文件
storageRef.listAll()
  .then((res) => {
    // res.prefixes 即为所有子文件夹的引用集合
    res.prefixes.forEach((folderRef) => {
      console.log('文件夹名称:', folderRef.name);
      console.log('文件夹完整路径:', folderRef.fullPath);
    });
  })
  .catch((error) => {
    console.error('列出文件夹失败:', error);
  });

Android(Kotlin)

val storage = FirebaseStorage.getInstance()
val storageRef = storage.reference

storageRef.listAll()
    .addOnSuccessListener { result ->
        // result.prefixes 包含当前目录下所有子文件夹的引用
        result.prefixes.forEach { folderRef ->
            Log.d("Storage", "文件夹名称: ${folderRef.name}")
            Log.d("Storage", "文件夹完整路径: ${folderRef.fullPath}")
        }
    }
    .addOnFailureListener { exception ->
        Log.e("Storage", "列出文件夹失败", exception)
    }

iOS(Swift)

let storage = Storage.storage()
let storageRef = storage.reference()

storageRef.listAll { (result, error) in
    guard let result = result else {
        print("列出文件夹失败: \(error?.localizedDescription ?? "未知错误")")
        return
    }
    // result.prefixes 是当前目录下所有子文件夹的引用数组
    result.prefixes.forEach { folderRef in
        print("文件夹名称: \(folderRef.name ?? "")")
        print("文件夹完整路径: \(folderRef.fullPath)")
    }
}

注意事项

  • 权限配置:确保Firebase Storage的安全规则允许读取/列出操作,示例规则如下(可根据实际需求调整):
rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}
  • 嵌套文件夹遍历:listAll()仅返回当前目录下的直接子前缀和文件,如果需要遍历所有嵌套文件夹,需要递归调用该方法处理每个子文件夹引用。

内容的提问来源于stack exchange,提问作者Diize

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 12:27:13