如何将图像上传到firebase存储然后将图像url存储在firestore中?

Posted

技术标签:

【中文标题】如何将图像上传到firebase存储然后将图像url存储在firestore中?【英文标题】:how to upload images to firebase storage then store the image url in firestore? 【发布时间】:2019-07-24 03:43:03 【问题描述】:

我正在尝试将图像上传到 Firebase 存储并将该图像 url 用作 firestore 中的元数据,但是图像 url 始终为空。 (我假设图像在我将其添加到我的 Firestore 时尚未完成上传)。

这就是我得到图片的方式:

      Future<File> getPic() async       
      return picture = await ImagePicker.pickImage(source: 
      ImageSource.camera);
      

我如何将图片上传到 Firebase 存储:

      Future<Uri> uploadPic(File image) async     
      StorageReference reference = _storage.ref().child("images/");
      StorageUploadTask uploadTask = reference.putFile(image);
      Uri location = (await uploadTask.onComplete).uploadSessionUri;
      print('img location $location');
      return location;
    

我如何通过按下 FloatingActionButton 来触发要拍摄的图片:

     floatingActionButton: FloatingActionButton(
     onPressed: () 
     getPic().then((f) async => await uploadPic(f));
     ),

每当我尝试将此图像 uri 保存到 firestore 时,它​​始终为空。那么这里的问题是什么?

【问题讨论】:

【参考方案1】:

试试

String downloadUrl =
await (await uploadTask.onComplete).ref.getDownloadURL();

代替你的

Uri location = (await uploadTask.onComplete).uploadSessionUri;

根据 firebase 的文档,UploadSessionUri 用于恢复上传 在大约的跨度内相同的文件。周Here is the link for docs

【讨论】:

以上是关于如何将图像上传到firebase存储然后将图像url存储在firestore中?的主要内容,如果未能解决你的问题,请参考以下文章

如何等待 Firebase 存储图像上传,然后运行下一个函数

Flutter - 将图像上传到 Firebase 存储

如何从输入字段将图像上传到 Firebase 云存储?

如何将多个图像上传到 Firebase 存储并返回多个下载 URL

Flutter将图像上传到firebase存储然后将其写入firestore

如何将多个图像上传到Firebase存储并返回多个downloadURL