如何使用Flutter在Firebase Storage目录中获取所有文件

时间:2019-05-22 21:28:34

标签: firebase flutter firebase-storage

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

所以我要从俱乐部目录中获取所有图像,以便我可以在我的应用程序中显示所有图像

我认为实现此目标的一种方法是获取每个图像的DownloadUrl

我已经尝试过:

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

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

那么有什么办法吗?

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

我想到的一个解决方案是,存储一个包含每个文件名的.txt文件,因此,首先我将文本文件换行,将其拆分开,然后将图像下载到与我从文本文件中获得的文件名。如果您可以将所有文件的名称存储在一个文本文件中然后上载它,则可以使用它。

解决方案的流程:

  • 将Firebase存储文件夹中所有文件的名称存储为.txt文件
  • 编写一种获取文本文件并将其逐行断开的方法
  • 编写一种获取下载网址的方法,每次从.txt文件中获取文件名时都要调用此方法。
  • 根据您的意愿使用图片网址!

欢迎任何建议或更正!

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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