首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从Firebase存储中获取具有我存储在数据库中的文件名的映像?

如何从Firebase存储中获取具有我存储在数据库中的文件名的映像?
EN

Stack Overflow用户
提问于 2020-08-21 12:53:07
回答 3查看 1K关注 0票数 1

我在firebase存储中存储了一个镜像,在Firestore中存储了镜像路径,如何使用Firestore中保存的路径获取该特定镜像?

代码语言:javascript
运行
复制
  getImagePath() async {
    var document = await firestoreInstance
        .collection("products")
        .document(widget.productId)
        .get();

    String path = document["filePath"];
    setState(() {
      filePath = path;
    });
  }

我从Firestore获取的文件名是这样的,如何使用此文件名获取图像?

EN

回答 3

Stack Overflow用户

发布于 2020-08-21 13:05:02

我可以给你一个想法。既然您已经评论过您的filePath看起来像这个image_picker4011381564582645700.jpg,,那么您必须只存储文件名。然后,您可以在firebase_storage的帮助下进行类似的操作

代码语言:javascript
运行
复制
String getStorageUrl(String fileName) async {
   
   String url = "";
   StorageReference storageReference = FirebaseStorage.instance.ref().child("folder/$fileName");
   url = await storageReference.getDownloadURL();
   return url;
}

在您想要的地方调用该函数。或者对你来说,

代码语言:javascript
运行
复制
getImagePath() async {
  var document = await firestoreInstance
      .collection("products")
      .document(widget.productId)
      .get();

  String path = await getStorageUrl(document["filePath"]);
  setState(() {
    filePath = path;
  });
}

然后,您可以在Image.network()中使用该URL来显示它,或者,如果您有其他计划,可以使用flutter_downloader

请确保使用正确的文件夹名称更改函数。希望这适合你的情况。

提示:最好将完整的URL存储到数据库,而不是只保存文件名。

票数 2
EN

Stack Overflow用户

发布于 2020-08-21 16:41:56

您也可以使用FirebaseImage小部件

代码语言:javascript
运行
复制
         CircleAvatar(
        backgroundColor: Colors.black,   
        backgroundImage:
   FirebaseImage('gs://yourapp=67791.appspot.com/images/cPW7zkbCpYQT2II7JqEOcUK5rOm2.png'),
                     )
票数 1
EN

Stack Overflow用户

发布于 2020-08-21 13:44:01

NetworkImage()Image.network()直接从给定的Firebase镜像存储中获取镜像

代码语言:javascript
运行
复制
//To set image on background

CircleAvatar(
  backgroundColor: Colors.transparent,foregroundColor:Colors.blueAccent,
  radius:16,
  backgroundImage:NetworkImage(filepath),
  child: FlatButton(
    onPressed: (){
      print("button pressed");},
    ),
  ),

//within child 

Container(
   child:Image.network(filepath),
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63516719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档