Определить, когда загрузка AngularFire2 будет завершена - PullRequest
0 голосов
/ 07 мая 2018

Я переношу сайт из стека Angular 4 в новый стек Angular 6 и AngularFire 2. Похоже, что в методах AngularFire 2 произошли некоторые изменения.

У меня есть следующий код:

let uploadTask = storageRef.child('sitemap.xml').put(sitemapBlob, metaData);

Я хотел бы определить, когда загрузка завершена, и похоже, что функции .on(firebase.storage.TaskEvent.STATE_CHANGED, которую я использовал в старой версии, больше нет.

Как определить, когда загрузка завершена?

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

РЕДАКТИРОВАТЬ 1:

Я создаю пример приложения, которое загружает файл в Firestorage и возвращает текущий URL-адрес загрузки. Взгляните:

https://stackblitz.com/edit/angular-firestorage-test-r2sjvz


Правильный способ проверить, завершена ли ваша загрузка, использует:

// get notified when the download URL is available
uploadTask.snapshotChanges().pipe(
    finalize(() => this.downloadURL = fileRef.getDownloadURL() )
 )
.subscribe()

и ваш html:

<a [href]="downloadURL | async">{{ downloadURL | async }}</a>

Полный официальный пример приведен в официальной документации: https://github.com/angular/angularfire2/blob/master/docs/storage/storage.md#monitoring-upload-percentage

0 голосов
/ 07 мая 2018

Согласно документации вы должны иметь возможность сделать что-то вроде этого:

const uploadTask = storageRef.child('sitemap.xml').put(sitemapBlob, metaData);    

uploadTask.snapshotChanges().pipe(
  filter(task => task.state === firebase.storage.TaskState.SUCCESS)
).subscribe(() => {
  // upload successful
});
...