Firebase snapshot.downloadURL не определен после успешной загрузки изображения

У меня есть этот код в моем приложении, который я использую для загрузки изображения и получения его URL-адреса, чтобы я мог сохранить его в базе данных, изображение находится в формате base64, и загрузка прошла успешно, как я вижу в выводе console.info(snapshot);, и проверка также в моем хранилище firebase, однако, свойство downloadUrl снимка не определено, я не знаю почему. Это не так, как должно было работать

storage.$putString(b64, 'data_url', {contentType:'image/jpg'}).$complete(function(snapshot) {
        console.info(snapshot);
        item.avatarUrl=snapshot.downloadURL;
        agents.$add(item).then(function(ref) {
        });

    });     

Получение URL-адреса загрузки в настоящее время требует дополнительного обхода. См. Для примера этот ответ stackoverflow.com/questions/43911080/…

Frank van Puffelen 28.05.2018 17:48
Интеграция Angular - Firebase Analytics
Интеграция Angular - Firebase Analytics
Узнайте, как настроить Firebase Analytics и отслеживать поведение пользователей в вашем приложении Angular.
3
1
4 262
4

Ответы 4

Я использую angularfire2 5.0.0-rc11 и сталкиваюсь с той же проблемой. Я изменил код следующим образом:

storage.$putString(b64, 'data_url', {contentType:'image/jpg'}).$complete(function(snapshot) {
    console.info(snapshot);
    //item.avatarUrl=snapshot.downloadURL;
      // changed to:
      snapshot.getDownloadURL()
      .then( downloadUrl => {

        item.avatarUrl=downloadUrl
        agents.$add(item).then(function(ref) {
        });
      })
      .catch( error => {
        console.info(error);
        //catch error here
      });

});    

Используйте snapshot.ref.getDownloadURL()

Теперь это возвращает обещание. См. Ответ Надира.

Fostah 31.10.2019 17:21

Обновление Novomber 2019 из официальной документации база огня:

function(){
      uploadTask.snapshot.ref.getDownloadURL().then(function(downloadURL) {
        console.info('File available at', downloadURL);
      });

    });

Вот источник из документации firebase

Если вы используете Android, используйте этот код для загрузки Uri файла.

Task<Uri> downloadUrl = taskSnapshot.getMetadata().getReference().getDownloadUrl(); 
Uri fileUri = downloadUrl.getResult().toString();

Другие вопросы по теме