【问题标题】:Is there a simple way to get the download url from firesbase-storage paths in Angular templates有没有一种简单的方法可以从 Angular 模板中的 firebase-storage 路径获取下载 url
【发布时间】:2020-11-24 03:37:41
【问题描述】:

我见过一些例子,人们将实际下载路径保存到 firestore,然后在模板中使用该图像。

但是我不太确定这是保存文件位置的正确方法。原因很简单,在检索下载 url 时它包含令牌,我假设这是为当前用户获取下载 url。

所以我在收到的每个模板上都做了什么,我必须获取 downloadUrl 以及下载 url 的组件代码。有没有办法避免这种情况,直接在模板文件中。所以我不需要操作简单的显示数据,其中包含要存储的图像参考。

【问题讨论】:

    标签: angular firebase-storage angularfire2


    【解决方案1】:

    您可以为此创建一个简单的管道:

    import { Pipe, PipeTransform } from '@angular/core';
    import { AngularFireStorage } from '@angular/fire/storage';
    import { Observable, from } from 'rxjs';
    
    @Pipe({
       name: 'firestoagePath'
    })
    export class FirestoagePathPipe implements PipeTransform {
        constructor(private storage: AngularFireStorage) { }
        transform(value: string, ...args: unknown[]): Observable<string> {
          if (typeof (value) === 'string') {
              const storageRef = this.storage.ref(value);
              return storageRef.getDownloadURL();
          }
          return from(value);
       }
    }
    

    使用管道,您可以对 firestore 进行注入,这很好,获取下载 url 并将其与异步管道链接,如下所示:

    <img *ngIf="firestoreObject.image.croppedSource | firestoagePath | async as imageSource"
        [src]="imageSource">
    

    在此示例中,firestoreObject 是一个随机对象,其图像具有指向 firestorage 上裁剪图像文件位置的字符串路径。

    【讨论】:

      猜你喜欢
      • 2017-07-05
      • 2011-03-02
      • 2012-01-21
      • 1970-01-01
      • 2011-02-13
      • 2021-10-31
      • 1970-01-01
      • 2011-01-27
      • 2015-05-12
      相关资源
      最近更新 更多