显示在 Angular 5 中作为 Blob 对象接收的图像

2024-05-14

我正在开发一个 MEAN Stack 应用程序,我想做的是显示存储在数据库中的图像,这样后端就可以工作,但我真正的问题是在前端Angular所以我这样做了

首先从后端接收图像,我做了一个服务来做到这一点

// Function to get user's profile image
  getProfileImage(){
      let httpHeaders = new HttpHeaders()
                         .set('authorization', this.authToken);
    return this._http.get(this.domain + '/authentication/getProfileImage',{headers :httpHeaders,
      responseType: "blob"});

  }

接收 Blob 形式的图像。

第二个是在component.ts我尝试将 Blob 转换为文件

imageToShow: any;

getImageFromService() {
      this.authService.getProfileImage().subscribe(data => {
        this.createImageFromBlob(data);
        console.log(data);
      }, error => {
        console.log(error);
      });
}

这是从服务获取图像并使用console.log(data);

这就是我得到的

Blob(763750) {size: 763750, type: "text/xml"}

它的大小与数据库中的文件长度相同,因此它可以工作。

现在将 Blob 转换为图像的第二种方法

createImageFromBlob(image: Blob) {
     let reader = new FileReader();
     reader.addEventListener("load", () => {
        this.imageToShow = reader.result;
        console.log(this.imageToShow);
     }, false);

     if (image) {
        reader.readAsDataURL(image);
     }
  } 

console.log(this.imageToShow);它显示的是这个data:text/xml;base64,/9j/4RE6RXhpZgAATU0A一个很长的string那是一个base64,所以我添加一个console.log(image); in the if向我展示的是这个

Blob(763750) {size: 763750, type: "text/xml"}

所以它没有做任何事情并且在 HTML 中

<img [src]="imageToShow " alt="" class="img">

那么出了什么问题


首先尝试将 img 标签绑定到一个变量,该变量将成为图片的 url。 例如

<img [src]=imageUrl>

那么你需要使用DomSanitizer

import { DomSanitizer } from '@angular/platform-browser';

constructor(private sanitizer:DomSanitizer)

绕过您的 unsafeUrl 的 SecurityTrust 在你的组件中,当你检索图像时,你应该为图像创建一个 url,如下所示

getImageFromService() {
    this.authService.getProfileImage().subscribe(data => {
        unsafeImageUrl = URL.createObjectURL(data);
        imageUrl = this.sanitizer.bypassSecurityTrustUrl(unsafeImageUrl);
    }, error => {
        console.log(error);
    });
}

这将创建一个图像的临时 URL,您可以在绑定中使用它

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

显示在 Angular 5 中作为 Blob 对象接收的图像 的相关文章

随机推荐

  • 渲染 ThreeJS 应用程序第一帧时的性能问题

    目前 当我渲染以下内容时 我的 ThreeJS 应用程序的性能受到很大影响第一帧 它会导致 Edge 和 IE 11 浏览器冻结 5 秒 并弹出窗口指示 此窗口没有响应 这可能会吓到我的用户 使用 Chrome 的性能分析器 问题似乎来自几
  • 故事板 Segue 标识符命名约定

    我正在构建一个大型故事板 我想知道是否有人提出了有用的建议Segue 标识符的命名约定 看起来苹果只是在他们的示例中使用了 ShowX 其中 X 是它所显示的视图的名称 到目前为止 我更喜欢使用 PushX 或 ModalX 来跟踪它是哪种
  • Spring Boot 模板未解决

    我正在尝试使用 Spring Boot 和 Thymeleaf 构建一个独立的 Web 应用程序 该应用程序在 IntelliJ IDEA 中运行良好 但我无法单独运行该 jar 显然模板不包括在内 我的项目结构如下 src main ja
  • Inotify linux 监视子目录

    是否可以以这种模式监视目录 storage data usernames Download gt storage data Download 我需要监视每个用户的下载文件夹中是否进行了更改 也许我需要创建所有路径的列表 将其放入数组中 并在
  • 为什么 javac 为最终字段插入 Objects.requireNonNull(this) ?

    考虑下面的类 class Temp private final int field 5 int sum return 1 this field 然后我编译和反编译该类 gt javac version javac 11 0 5 gt jav
  • 新创建的Python虚拟环境中的默认库

    我使用 python 创建了一个新的虚拟环境virtualenv tool virtualenv venv 然后我激活了虚拟环境 source venv bin activate 然后我做了一个pip freeze这就是我得到的 venv
  • 如何不断刷新屏幕并实时更新[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在linux上写一个C程序 不断刷新屏幕并实时更新 例如类似于top终端中的命令 谁能指出我正确的方向 为了保持它跨终端类型的可移
  • 将属性应用于返回值 - 在 F# 中

    在 C 中 可以将属性应用于方法的返回 return DynamicAttribute public object Xyz return new ExpandoObject 这在 F 中可能吗 背景 我想要一个用 F 编写的库的方法 该方法
  • Netbeans 中的 Java 应用程序与 Java 桌面应用程序 [重复]

    这个问题在这里已经有答案了 可能的重复 Netbeans GUI 编辑器生成自己难以理解的代码 https stackoverflow com questions 2561480 netbeans gui editor generating
  • 如何为有效号码指定 DCG?

    我正在尝试为有效数字指定 DCG 如下所示 value Number gt valid number Number 基本上检查指定的值是否是数字 它也可能是变量 因此有必要检查 我不知道如何构建这个valid number不过 DCG 谓词
  • Windows 事件日志权限

    我需要授予用户哪些权限才能写入 Windows 事件日志 我有一个 ASP NET 应用程序需要模拟用户 并且模拟的用户必须能够写入事件日志 要创建事件日志源 您需要成为管理员 否则您应该能够在没有提升权限的情况下写入它 也许看一下本文 h
  • 从 ADF Faces JSF 1.2 中的托管 bean 构造函数导航

    是否可以从托管 bean 的构造函数导航到另一个页面 视图 如果发生任何异常 我希望进行此重定向 我尝试了很多方法 Try 1 getFacesContext responseComplete getFacesContext getAppl
  • 如何在 RxJS 订阅方法中等待

    在 RxJS 主题的订阅回调内部 我想要await on an async功能 下面是打字稿转译器抱怨的代码示例 错误 131 21 TS2304 找不到名称 await async ngOnInit this subscriber dat
  • 类型“never”上不存在属性“click”。 TS2339

    根据有关 TypeScript 此类错误的其他类似问题 关于问题 44147937 https stackoverflow com questions 44147937 property does not exist on type nev
  • ngrx 存储是否持久?

    ngrx 存储是否持久 换句话说 我们可以关闭浏览器重新打开它 并检索添加到ngrx 商店 https github com ngrx platform 目前 ngrx store 不支持此类功能 但是您可以通过使用类似的库来维护状态ngr
  • 使用 Cassandra 进行单元版本控制

    我的应用程序使用 AbstractFactory 作为 DAO 层 因此一旦实现了 HBase DAO 系列 创建 Cassandra DAO 系列并从多个角度查看差异对我来说将是非常好的 不管怎样 试图做到这一点 我看到 Cassandr
  • 用于集成测试的 Spring-boot 默认配置文件

    Spring boot利用弹簧型材 http docs spring io spring boot docs current reference html boot features profiles html它允许针对不同的环境进行单独的
  • 如何在不包含 MicrosoftAjax.js 的情况下使用 MicrosoftMvcValidation.js?

    如果您想使用 jQuery Validate 但不想使用主要的 Microsoft AJAX 那么 MVC 2 RC1 中似乎存在问题 即使压缩后 它也有 25kb 根据 Phil Haack 的说法 你应该能够只需包含这些脚本 http
  • 如何为已编译的 MATLAB 创建安装程序并要求用户接受我们的许可条款?

    我正在 MATLAB 中编写程序分发给 Windows 用户 我使用 MATLAB 编译器和 MATLAB r2014a 版本来创建程序 我可以使用 MATLAB 应用程序编译器创建 Windows 安装程序 并且它的工作效果可以接受 但是
  • 显示在 Angular 5 中作为 Blob 对象接收的图像

    我正在开发一个 MEAN Stack 应用程序 我想做的是显示存储在数据库中的图像 这样后端就可以工作 但我真正的问题是在前端Angular所以我这样做了 首先从后端接收图像 我做了一个服务来做到这一点 Function to get us