我有一个显示夜总会描述和图像的应用程序。每个俱乐部都有大约4个相关图像。 在Firebase Storage中,我为每个俱乐部创建了目录,然后将其图像存储在其中。
所以我要从俱乐部目录中获取所有图像,以便我可以在我的应用程序中显示所有图像
我认为实现此目标的一种方法是获取每个图像的DownloadUrl
。
我已经尝试过:
final StorageReference firebaseStorageRef = FirebaseStorage.instance.ref()
.child('profilePics/$clubID/SomeImage.jpg').getDownloadURL();
但是由于我事先不知道所存储图像的名称,所以我不能使用它
那么有什么办法吗?
答案 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 网站上得到的
答案 1 :(得分:1)
我想到的一个解决方案是,存储一个包含每个文件名的.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");
});