【问题标题】:How to get firebase storage image url to firestore database如何获取firebase存储图像url到firestore数据库
【发布时间】:2020-09-24 06:10:55
【问题描述】:

我正在尝试将图像上传到 firebase 存储并将该图像 url 用作 firestore 中的元数据,但是图像 url 始终为空。这是代码

我如何得到图片

File noticepic;
Future getNotice()async{
var tempImage = await ImagePicker.pickImage(source: ImageSource.gallery);
setState(() {
  noticepic=tempImage ;
});
}

我如何将其上传到 Firebase 存储

uploadNotice()async{
  var randomno=Random(25);
  final StorageReference firebaseStorageRef=FirebaseStorage.instance
  .ref().child('cisnotices/${randomno.nextInt(5000).toString()}.jpg');
    StorageUploadTask task = firebaseStorageRef.putFile(noticepic);
    StorageTaskSnapshot snapshottask =  await task.onComplete;
   String downloadUrl = await snapshottask.ref.getDownloadURL();
    noticeProvider.changePhotoUrl(downloadUrl.toString());

  setState(() {
    print('pic uploaded');

  });

}
  NoticeProvider noticeProvider=NoticeProvider();

这是noticeprovider.dart

 changePhotoUrl(String value){
 _photoUrl=value;
 notifyListeners();
   }

  saveNotice(){
 var newNotice=Notice(userName: userName,userPost: userPost,photoUrl: photoUrl,
 date: date,noticeId: uuid.v4());
 firestoreService.saveNotice(newNotice);
 } 

如何通过按图标按钮触发拍照

 child: IconButton(
                       icon: Icon(Icons.add_photo_alternate),
                       color: Colors.grey[700],
                            iconSize: 40,
                            onPressed:(){
                              getNotice().then((f) async => await uploadNotice());

                             }
                             ),

【问题讨论】:

    标签: database flutter file-upload google-cloud-firestore firebase-storage


    【解决方案1】:

    您可以使用此功能上传图片并从firebase获取url

    Future uploadFile(File file) async {
        StorageReference storageReference = FirebaseStorage.instance.ref().child(
            '${FirebaseStorageFolder.transactionDoc}/${Path.basename(file.path)}}');
        StorageUploadTask uploadTask = storageReference.putFile(file);
    
        var dowurl = await (await uploadTask.onComplete).ref.getDownloadURL();
        print("done");
        return dowurl.toString();
    
    
      }
    

    【讨论】:

      猜你喜欢
      • 2020-09-26
      • 2021-02-27
      • 2020-12-18
      • 2021-10-14
      • 1970-01-01
      • 2021-07-23
      • 2021-03-14
      • 2020-12-09
      • 2019-01-06
      相关资源
      最近更新 更多