检测AngularFire2存储上载何时完成

时间:2018-05-07 17:22:52

标签: angular angularfire2 angular6

我正在将一个站点从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 :(得分:2)

编辑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

答案 1 :(得分:0)

根据documentation,您应该能够做到这样的事情:

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

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