【问题标题】:How to display Image stored in firebase in angular如何以角度显示存储在firebase中的图像
【发布时间】:2019-08-06 06:49:22
【问题描述】:

我想在firebase数据库中显示我使用表单上传存储的图像。我在 html 中显示图像时遇到问题。错误显示为“ERR_INVALID_URL”

根据我的研究,图像存储在 data:image/png;base64 格式如何在 html 中显示此图像?

HTML 文件

<div class="uk-grid-match uk-child-width-expand@s uk-text-center" uk-grid>
    <div>
        <div class="uk-card uk-card-default uk-card-body" *ngFor="let image of albumImages">
           <img [src]="getSantizeUrl(image.multiImages)" />
        </div>
     </div>
</div>

TS 文件

export class GalleryComponent implements OnInit {
 albumImages: IPhotos[] = [];

  constructor(private imageUpload: ImageUploadService, private sanitizer: DomSanitizer) { }

  ngOnInit() {
    this.imageUpload.getImages().subscribe((res)=> {
      this.albumImages = res;
      console.log(this.albumImages);
    });
  }
  public getSantizeUrl(url : string) {
    return this.sanitizer.bypassSecurityTrustUrl(url);
}
}

服务文件

getImages() {
    return this.http.get<{[key: string]: IPhotos}>('https://angularimageupload-3f681.firebaseio.com/.json').pipe( map (responseData => {
      const albumArray: IPhotos[] = [];
      for(const key in responseData) {
        if(responseData.hasOwnProperty(key)) {
          albumArray.push({ ...responseData[key], id: key })
        }
      }
      return albumArray;

    }))
  }

firebase中存储的图片应该以html显示

【问题讨论】:

  • 你确定image.multiImages 是一个 URL,错误说它可能是一个无效的 URL 吗?
  • image.multiImages 有我通过表单上传的图像路径
  • 是文件夹路径还是 URL ?
  • 我在我的问题中添加了图片。
  • 我在你的图片中没有看到 multiImages 属性。

标签: angular


【解决方案1】:

首先,既然是 data:image/png;base64,你需要使用 bypassSecurityTrustResourceUrl 而不是 bypassSecurityTrustUrl

public getSantizeUrl(url : string) {
    return this.sanitizer.bypassSecurityTrustResourceUrl(url);
}

其次,multiImages 是一个包含图像的数组。您需要在 src 属性中指定要传递 URL 的任何项目:您不能将数组传递给它,因此如果您尝试循环显示albumImages 的所有图像,请尝试以下操作:

<div class="uk-grid-match uk-child-width-expand@s uk-text-center" uk-grid>
    <div>
        <div class="uk-card uk-card-default uk-card-body" *ngFor="let image of albumImages">
           <img *ngFor="let singleImage of image.multiImages " [src]="getSantizeUrl(singleImage)" />
        </div>
     </div>
</div>

【讨论】:

  • 我也想显示 userImage 但不是 url 格式所以怎么显示呢?
  • @divyadave 我建议看看这个问题:stackoverflow.com/questions/39074806/…
  • 哦,会看到的。
  • 我将路径转换为 ​​url 格式,但是当我以 html 形式显示 [src] = "getSantizeUrl(albumImages.userImage)" 时,图像没有显示我检查到图像存储在 Firebase url格式还有什么情况?
  • 如果图片路径是网址,则应使用bypassSecurityTrustUrl
猜你喜欢
  • 1970-01-01
  • 2020-12-08
  • 1970-01-01
  • 2017-01-22
  • 2022-01-26
  • 1970-01-01
  • 2023-04-10
  • 2017-01-25
  • 2016-12-13
相关资源
最近更新 更多