我一直在浏览 angularfire2 文档以从存储中检索 downloadURl。我希望我在这里错过了一些简单的东西。
文档指出:
@Component({
selector: 'app-root',
template: `<img [src]="profileUrl | async" />`
})
export class AppComponent {
profileUrl: Observable<string | null>;
constructor(private storage: AngularFireStorage) {
const ref = this.storage.ref('users/davideast.jpg');
this.profileUrl = ref.getDownloadURL();
}
}
但是,一旦我上传了图像,我想将下载网址作为字符串返回以上传到 firestore。我需要外部服务的下载 URL。
我的功能
uploadImage(base64data) {
const filePath = (`myURL/photo.jpg`);
const storageRef = firebase.storage().ref();
var metadata = {
contentType: 'image',
cacheControl: "public, max-age=31536000",
};
const ref = this.storage.ref(filePath);
const task = ref.putString(base64data, 'data_url', metadata).then(() => {
var downloadURL = ref.getDownloadURL();
})
}
这样就可以完美上传图像了。但是,我想将下载 URL 写入 firestore。当控制台记录我的“downloadURL”变量时,我得到以下信息:
PromiseObservable {_isScalar: false, promise: y, scheduler: undefined}
下载内容位于可观察的 promise 内。如何获取下载 URL 字符串作为我的变量?一旦我有了这些,我就可以对 Firestore 更新进行排序。
最佳答案
//observable to store download url
downloadURL: Observable<string>;
task.snapshotChanges().pipe(
finalize(() => {
this.downloadURL = fileRef.getDownloadURL();
this.downloadURL.subscribe(url=>{this.imageUrl = url})
})
)
引用:https://github.com/ReactiveX/rxjs/blob/master/doc/observable.md
关于firebase - AngularFire2 - Firebase 存储 getDownloadURL() - 如何返回 firestore 的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49362553/