当前位置: 首页 > 知识库问答 >
问题:

如何使用Angular HttpClient以直观的方式获取图像?

欧阳炜
2023-03-14

我有一个返回图像的后端。我可以在浏览器中调用这个后端。图像得到显示,所有OK。

响应类型是image/jpeg。

现在,我正在研究如何使用Angular HttpClient获取图像的选项。

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class ThumbnailService {
  private thumbnailUrl = 'http://localhost:8080/thumbnail';

  constructor(private http: HttpClient) { }

  public findOne(classifiedId: number): Observable<any> {
    const httpOptions = {
      headers: new HttpHeaders({
        'Accept': 'image/jpeg',
      })
    };
    return this.http.get<any>(`${this.thumbnailUrl}/${classifiedId}`, httpOptions);
  }
}

据我所知...

  • Angular试图将响应解析为JSON,因为类型
  • 有许多重载方法可用于解析响应,这取决于我键入响应的方式
  • 如果使用Blob作为返回类型:
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class ThumbnailService {
  private thumbnailUrl = 'http://localhost:8080/thumbnail';

  constructor(private http: HttpClient) { }

  public findOne(classifiedId: number): Observable<any> {
    const httpOptions = {
      headers: new HttpHeaders({
        'Accept': 'image/jpeg',
      })
    };
    return this.http.get<Observable<Blob>>(`${this.thumbnailUrl}/${classifiedId}`, httpOptions);
  }
}

我得到同样的错误。

“{headers:HttpHeaders;responseType:string;}”类型的参数不可分配给“{headers?:HttpHeaders{[header:string]:string string[];};观察?:”body“;params?:HttpParams{[param:string]:string string[];};ReportProgress?:Boolean;responseType?:”JSON“;With Credentials?:Boolean;}”类型的参数。属性“响应类型”的类型不兼容。类型'string'不能赋值到类型'json''。

共有1个答案

汪玮
2023-03-14

要在响应中接收BLOB,必须将responseType参数传递到HTTP get方法中。下面是Angular HttpClient get方法Http get的可用重载-Angular check the Overload#5。

 类似资料:
  • 问题内容: 我想从受监视的应用程序内部以编程方式获得等效的输出。我看到可以通过HotSpot诊断Bean触发二进制堆转储,但是我看不到如何获取直方图数据。可能吗 ? 问题答案: 这可能是不是最好的例子/代码,但看看这个 (我认为这仅适用于Hotspot JVM)

  • 问题内容: 有没有一种方法可以指定MySQL中的bin大小?现在,我正在尝试以下SQL查询: 生成的数据足够好,但是行太多。我需要的是一种将数据分组到预定义的bin中的方法。我可以从脚本语言执行此操作,但是有没有办法直接在SQL中执行此操作? 例: 我在寻找什么: 我猜想这不能直接实现,但是对任何相关存储过程的引用也可以。 问题答案: 这是一篇有关在MySQL中为数值创建直方图的超级快捷方法的文章

  • 问题内容: 给我一个Bearer令牌,以后可以使用;但是,这是一个shell命令。如何通过Google Cloud Python API以编程方式获取一个? 我看到了使用oauth2client的先前示例,但现在已弃用。如何使用google.auth和oauthlib做到这一点? 问题答案: 答案取决于您的环境以及您如何创建/获取凭据。 什么是Google Cloud凭据? Google Clou

  • 如何使用外观模式 现在我们用 PersistencyManager 来管理专辑数据,用 HTTPClient 来处理网络请求,项目中的其他类不应该知道这个逻辑。他们只需要知道 LibraryAPI 这个“外观”就可以了。 为了实现外观模式,应该只让 LibraryAPI 持有 PersistencyManager 和 HTTPClient 的实例,然后 LibraryAPI 暴露一个简单的接口给其

  • 问题内容: 基本上,我想获取python解释器的句柄,以便可以传递脚本文件来执行(从外部应用程序执行)。 问题答案: 这适用于Linux和Windows: Python 3.x Python 2.x

  • 我们的java流媒体服务器正在生产中运行,它需要约10GB的RAM才能运行,所以我们安装了32GB。内存会逐渐增加,直到达到限制并弹出内存不足异常。 由于直方图和内存转储数字与系统报告的内存使用量不匹配,我很难准确地指出随着时间的推移,哪些对象正在累积,也就是说,java进程占用的内存略多于最大20GB(因此内存不足异常是合理的),但直方图和内存转储显示总共使用了6.4GB。 如何在直方图中未显示