【问题标题】:How to get all files inside a Firebase Storage directory using Flutter如何使用 Flutter 获取 Firebase 存储目录中的所有文件
【发布时间】:2019-10-09 10:32:53
【问题描述】:

我有一个显示夜总会描述和图像的应用程序。每个俱乐部有大约 4 个相关图像。 在 Firebase Storage 中,我为每个俱乐部创建了目录,然后将他们的图像存储在里面。

所以我想做的是从俱乐部目录中获取所有图像,这样我就可以在我的应用程序中显示所有图像

我认为实现此目的的一种方法是获取每张图片的DownloadUrl

我试过这个:

final StorageReference firebaseStorageRef = FirebaseStorage.instance.ref() .child('profilePics/$clubID/SomeImage.jpg').getDownloadURL();

但由于我事先不知道存储的图像的名称,所以我不能使用它

那么有什么办法吗?

【问题讨论】:

    标签: firebase flutter firebase-storage


    【解决方案1】:

    如果您不知道 Cloud Storage 中对象的完整路径,那么您将无法使用移动客户端 SDK 对其进行任何操作。通常,在将下载 URL 上传到存储桶时获取下载 URL,然后将该 URL 写入数据库,以便以后查询。

    【讨论】:

    • 好的,谢谢,然后我会将下载网址列表存储在我的 firebase 俱乐部中!
    • 这个答案已经过时了,你可以从 ref 中列出子文件名。请参阅下面的 Ahmar Tauqir 的回答。
    【解决方案2】:
    Future<void> listExample() async {
        firebase_storage.ListResult result =
            await firebase_storage.FirebaseStorage.instance.ref().listAll();
    
        result.items.forEach((firebase_storage.Reference ref) {
            print('Found file: $ref');
        });
    
        result.prefixes.forEach((firebase_storage.Reference ref) {
            print('Found directory: $ref');
        });
    }
    

    这段代码对我有用,我是从 Flutter Fire 网站获得的

    这里是文档的链接 https://firebase.flutter.dev/docs/storage/usage

    【讨论】:

      【解决方案3】:

      我想出的一个解决方案是,存储一个 .txt 文件,其中包含每个文件的名称,所以首先我通过将文件换行来读取文本文件,然后将我的图像下载到与我从文本文件中获得的文件的名称。如果您可以将所有文件的名称存储在一个文本文件中然后上传它,这可以工作!

      解决方案流程:

      • 将 Firebase 存储文件夹中所有文件的名称存储在 .txt 文件中
      • 编写获取文本文件的方法并逐行拆分
      • 编写一个获取下载地址的方法,每次从 .txt 文件中获取文件名时调用此方法。
      • 根据需要使用图片网址!

      欢迎提出任何建议或更正!

      【讨论】:

        【解决方案4】:

        https://github.com/FirebaseExtended/flutterfire/pull/232

        需要在 pubspec.yaml 中使用包,如下所示:

          firebase_storage:
            git:
              url: git://github.com/danysz/flutterfire.git
              ref: master
              path: packages/firebase_storage
        

        飞镖文件

        void getFirebaseImageFolder() {
        final StorageReference storageRef =
            FirebaseStorage.instance.ref().child('Gallery').child('Images');
        storageRef.listAll().then((result) {
          print("result is $result");
        });
        

        Original post by Mahesh Peri

        【讨论】:

          猜你喜欢
          • 2021-10-18
          • 2020-06-14
          • 2021-12-23
          • 1970-01-01
          • 2020-09-11
          • 2023-03-03
          • 2020-02-12
          • 2020-10-29
          • 1970-01-01
          相关资源
          最近更新 更多