首页 > 解决方案 > 检测AngularFire2存储上传完成的时间

问题描述

我正在将一个站点从 Angular 4 堆栈迁移到新的 Angular 6 和 AngularFire 2 堆栈。AngularFire 2 方法似乎发生了一些变化。

我有以下代码:

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

我想检测上传何时完成,并且.on(firebase.storage.TaskEvent.STATE_CHANGED我在旧版本中使用的功能似乎不再存在。

如何检测上传完成的时间?

标签: angularangularfire2angular6

解决方案


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


推荐阅读