Как загрузить изображения в хранилище FireBase, а затем сохранить URL изображения в FireStore? - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь загрузить изображения в хранилище 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;
        }
    
  • как я запускаю снимок, нажимая кнопку FloatingAction:

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

Всякий раз, когда я пытаюсь сохранить это изображение в FireStore, оно всегда равно нулю,так в чем тут проблема?

1 Ответ

0 голосов
/ 02 марта 2019

Попробуйте

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

вместо вашего

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

Согласно документам Firebase UploadSessionUri используется для возобновления загрузки того же файла в течение промежутка времени приблизительно,неделя Вот ссылка на документы

...