提问者:小点点

如何使用递归获取Firebase云存储目录树中的所有文件


我最近一直在Swift中使用Firebase Cloud Storage,遇到了一个场景,我想检索存储在存储桶中的“文件夹”(其中包含其他子文件夹)中的图像(并且仅检索图像)。换句话说,我想使用递归来访问嵌套在许多文件夹中的文件。

我已经看到过这样的示例,但当然,这是通过使用Swift的FileManager,因此我将无法在Firebase Cloud Storage上使用相同的功能。

另外,请记住,我不想有一个硬编码的引用路径,例如store.引用(). child("硬编码路径")

这是我到目前为止在不使用递归的情况下所拥有的:

class FIRQueries {
    var storage: Storage
    var storageRef: StorageReference
    init() {
        storage = Storage.storage()
        storageRef = storage.reference()
    }
    func listFilesInCloud(completion: @escaping(Result<StorageListResult, Error>) -> ()) {
        self.storageRef.root().listAll { result, error in
        if let error = error {
            completion(.failure(error))
            print(error.localizedDescription)
            return
        } else {
            completion(.success(result))
            for prefix in result.prefixes {
                completion(.success(prefix.fullPath))
            }
            for item in result.items {
                print(item)
            }
        }
    }
}

并在SwiftUI. on出现块中接收结果

.onAppear {
        FIRQueries().listFilesInCloud { value in
            switch value {
            case .failure(let error):
                print(error)
                
            case .success(let result):
                for prefix in result.prefixes {
                    print(prefix.fullPath)
                }
            }
        }
}

Soo…有什么方法可以实现这一点吗?有了这段代码,我只设法获得了桶根目录下“文件夹”的名称。我知道我可以在self. storageRef.root()之后设置一个并给它一个路径,但这将是一个硬编码的路径。

感谢任何帮助!谢谢!


共0个答案