从响应中提取图像数据:Angular 2

2023-12-07

响应具有图像数据,但我无法从响应中提取它。

客户代码-

download() {
    this._http.get('http://localhost:9000/download/' + this._fileid)
    .subscribe(
    data => {
        this.image = data;
    },
    err => console.log('Error is..:' + err)
    );
}

服务器代码-

app.get('/download/:fileid', function(req, res) {
    var id = req.params.fileid;
    res.set('Content-Type', 'image/jpeg');
    gfs.createReadStream({_id: id}).pipe(res);
});

[编辑]-我已经调整了我的代码以使用 CustomXhr,但是我得到一个没有数据的空 blob。

自定义 XHR 代码-

@Injectable()
export class CustomBrowserXhr extends BrowserXhr {
  build(): any {
    let xhr = super.build();
    xhr.responseType = "blob";
    return <any>(xhr);
  }
}

引导代码-

export function main(initialHmrState?: any): Promise<any> {

  return bootstrap(App, [
    ...ENV_PROVIDERS,
    ...PROVIDERS,
    ...DIRECTIVES,
    ...PIPES,
    ...APP_PROVIDERS,
     provide(BrowserXhr, { useClass: CustomBrowserXhr })
  ])
  .catch(err => console.error(err));
}

HTTP 请求-

download() {
  this._http.get('http://localhost:9000/download/' + this._fileid)
    .toPromise()
    .then(res => {
      if (res.headers.get("Content-Type").startsWith("image/")) {
          var blob = new Blob([new Uint8Array(res._body)], {
              type: res.headers.get("Content-Type")
          });
          var urlCreator = window.URL;
          var url = urlCreator.createObjectURL(blob);
          console.log(url);
          this.image = url;
      }
    })
}

您正在寻找的是arrayBuffer()。您的代码将是:

download() {
    this._http.get('http://localhost:9000/download/' + this._fileid)
    .subscribe(
    data => {
        this.image = data.arrayBuffer();
    },
    err => console.log('Error is..:' + err)
    );
}

但不幸的是,arrayBuffer()截至 beta.13 尚未实施。

你可以改为使用XMLHttpRequest, 这是一个笨蛋

getImage(url:string){ 
 return Observable.create(observer=>{
  let req = new XMLHttpRequest();
  req.open('get',url);
  req.responseType = "arraybuffer";
  req.onreadystatechange = function() {
    if (req.readyState == 4 && req.status == 200) {
      observer.next(req.response);
      observer.complete();
    }
  };
  req.send();
 });
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从响应中提取图像数据:Angular 2 的相关文章

  • 从相机拍照后图像未刷新

    我将这个简单的代码与 ionic 2 一起使用
  • 如何将现有的 NativeScript Angular 项目转换为代码共享项目

    所有可用的教程都讨论将 Angular Web Apps 转换为代码共享 Nativescript 项目 我想做相反的事情 我几乎用 Nativescript 完成了移动应用程序的编码 现在我想制作一个在两者之间共享代码的 Web 应用程序
  • Angular2 http.post 被执行两次

    我遇到一个奇怪的问题 Angular2 的 RC1 Http 服务执行 http post 调用两次 我已经调试了我的应用程序 并且我知道这不是点击事件问题 导致核心服务调用的所有调用 public create json Object p
  • Angular2 RC5动态编译具有正确模块的组件

    我正在尝试使用 angular2compiler https angular io docs ts latest api core index Compiler class html动态插入组件 只要所有代码都在默认模块中 它就可以正常工作
  • Primeng - 无法在列中显示数组项

    我在 Angular 2 中使用 primeng 数据表 我的模型是一个数组products 每个产品都有一系列locations 该位置数组有一个属性name 如何显示每个name一行中的位置数组product 示例 如果首先produc
  • 是否可以在 Angular 6 中生成 QR 码并将其导出为 pdf,而不将其渲染为 html

    我想使用将 QR 码导出为 pdfjsPDF而不在 html 中显示它 我尝试了很多库 qrcode angularx qrcode 你可以使用ngx 二维码 https github com techiediaries ngx qrcod
  • 在 Angular 中包含共享资产

    我创建了一个有角度的工作区 其中托管多个有角度的项目和库 在工作区中 我有一个共享库 其中包含所有资产 图像和徽标 assets projects xxx workspace src favicon ico projects xxx wor
  • Angular Material mat-form-field 输入字段图标

    在 Angular 项目中我有角材料垫形式场 https material angular io components form field overview我的图标出现在左外侧
  • 如何将 Bokeh 与 Angular 4 集成?

    我在后端生成了散景图 我想将其嵌入到已经存在的 Angular 4 Web 应用程序中 目前我使用了 bokeh components 函数 它生成以下两个 html 标签
  • 更新到 Angular 6 和 rxjs 6 后 Plunker 损坏

    我有一个Plunker 中的 Angular 应用程序 https embed plnkr co 1dAIGrGqbcfrNVqs4WwW 自从我升级我的应用程序以使用 Angular 6 和 rxjs 6 以来 它不再起作用 这是我的co
  • 如何停止 mat-autocomplete 以将自定义用户输入值与给定选项分开?

    我正在使用来自material angular io的mat auto完整组件 默认行为是用户可以输入任何值 并提供可供选择的选项 您还可以将您的输入添加到所选值中 您可以在此处查看示例 https stackblitz com angul
  • Angular2 CORS 问题

    我是 angular2 的新手 公平地说 我对尝试修复的知识知之甚少 但是我遇到了一些有关跨站点请求的问题 试图从另一个应用程序访问服务 但无论我尝试什么 我都会遇到这个问题去做 XMLHttpRequest cannot load htt
  • 添加滚动到顶部按钮(Ionic 2 | Typescript)

    大家好 我正在尝试添加 滚动到顶部按钮 实现以下内容 1 当用户向下滚动时显示按钮 2 当用户向上滚动时隐藏按钮 3 如果点击该按钮 则滚动到顶部并隐藏该按钮 关于如何使其正确的任何建议 多谢 简化scrollToTop from adri
  • 在 httpInterceptor 中过滤请求 - Angular 4.3+

    我有一个身份验证拦截器 但是 我希望此拦截器能够过滤请求 并且当用户访问不需要用户身份验证的组件 例如确认帐户密码等 时不应用该拦截器 有关于如何进行的示例吗 这是 auth 拦截器的逻辑 intercept request HttpReq
  • 不允许我将对象推入数组

    我正在使用 Angular 我试图将一个对象推入数组 但它给了我错误 它说类型错误 无法读取未定义的属性 push 也就是下面的代码 文章是一个对象 articles Article addArticle newTitle HTMLInpu
  • Angular4如何使用flatMap链接forkJoin

    我所处的情况是 我需要进行 5 个可以并行执行的 http 调用 在这五个调用之后需要执行另一个 http 调用 我在前 5 个中使用了 forkJoin 但我不知道如何链接 flatMap 或其他函数 forkJoin firstObse
  • 测试 - 无法解析(ClassName)的所有参数

    Context 我创建了一个ApiService类能够处理我们的自定义 API 查询 同时使用我们自己的序列化器和其他功能 ApiService的构造函数签名是 constructor metaManager MetaManager con
  • 执行 POST 请求时 Spring Boot 端点 403 OPTIONS

    我正在使用 Spring 运行一个服务 当我的 Angular 前端尝试发出 POST 请求时 会收到带有请求方法 选项的 403 错误 Spring 服务和 Angular 应用程序都在我的机器上本地运行 我尝试使用 Chrome 插件切
  • 模块“AppModule”声明了意外值“未定义”

    这里有什么问题吗 我正在尝试使其工作 但我在标题中收到该错误 我已经包括了
  • Angular 5 属性指令将 mat-ripple 添加到宿主元素

    我怎样才能添加mat ripple指令到我创建的自定义指令的主机元素 重点是要有mat ripple自动添加到我添加的任何元素my custom directive too 所以如果我添加

随机推荐