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

未知中间子路径时,能否从Firebase Storage下载文件?

Firebase Storage 未知中间随机子路径时的文件下载问题

不能直接通过通配符*来定位文件,Firebase Storage的child()方法不支持通配符匹配——你写的.child("*")会被当作字面量的路径片段,实际查找的是/students/ekljfbwekncwlkjbweclk/gpas/*/4这个具体路径,而非匹配任意子路径,所以代码会失败。

要实现需求,有两种可行方案:

1. 遍历目录查找目标文件

通过listAll()方法列出gpas下的所有子目录,逐个检查每个目录下是否存在4文件:

firebaseStorageStudentRef.child("ekljfbwekncwlkjbweclk").child("gpas")
    .listAll()
    .addOnSuccessListener { listResult ->
        // 遍历gpas下的所有子文件夹
        listResult.prefixes.forEach { folderRef ->
            folderRef.child("4")
                .downloadUrl
                .addOnSuccessListener { uri ->
                    Log.i(TAG, "Success! Uri is: $uri")
                }
                .addOnFailureListener {
                    // 当前文件夹下无目标文件,忽略错误
                }
        }
    }
    .addOnFailureListener { e ->
        Log.e(TAG, "Failed to list folders. Exception is: $e")
    }

注意:这种方法依赖Storage规则允许列出目录操作,且如果gpas下子目录数量较多,会有一定性能开销。

2. 提前记录完整路径到数据库

在生成随机子路径时,将该路径与学生ID关联存储到Firebase Realtime Database或Firestore中。之后只需通过学生ID查询到完整文件路径,即可直接在Storage中定位并下载文件,这是更高效的方案,避免了目录遍历的开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 02:35:15