如何将图像上传到Firebase存储,然后将图像URL存储在Firestore中?

时间:2019-03-02 06:47:32

标签: firebase dart flutter google-cloud-firestore firebase-storage

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

  • 这是我获取图片的方式:

    npm uninstall -g angular-cli
    npm cache clean
    npm install -g rxjs
    npm install -g @angular/cli
    
  • 我如何将图片上传到Firebase存储:

          Future<File> getPic() async {      
          return picture = await ImagePicker.pickImage(source: 
          ImageSource.camera);
          }
    
  • 我如何通过按下FloatingActionButton触发图片拍摄:

          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;
        }
    

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

1 个答案:

答案 0 :(得分:0)

尝试

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

代替您的

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

根据firebase UploadSessionUri的文档,用于恢复上传   同一文件的范围约为。 Here is the link for docs