У меня есть этот код в моем приложении, который я использую для загрузки изображения и получения его 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) {
});
});

Я использую 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()
Теперь это возвращает обещание. См. Ответ Надира.
Обновление Novomber 2019 из официальной документации база огня:
function(){
uploadTask.snapshot.ref.getDownloadURL().then(function(downloadURL) {
console.info('File available at', downloadURL);
});
});
Если вы используете Android, используйте этот код для загрузки Uri файла.
Task<Uri> downloadUrl = taskSnapshot.getMetadata().getReference().getDownloadUrl();
Uri fileUri = downloadUrl.getResult().toString();
Получение URL-адреса загрузки в настоящее время требует дополнительного обхода. См. Для примера этот ответ stackoverflow.com/questions/43911080/…