尝试将图像作为 byte[] 从 Spring 后端发送到 Angular 前端但是:

Trying to send a image as byte[] from Spring backend to Angular frontend but:

后端代码:

@GetMapping("datamatrix")
public ResponseEntity<byte[]> generarDataMatrix(Long id) throws IOException {

    byte[] dataMatrixEnBytes = dataMatrix.generarDataMatrixImagen(id.toString(), id);

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.IMAGE_JPEG);
    return new ResponseEntity<>(dataMatrixEnBytes, headers, HttpStatus.OK);
}

在 Postman 中响应正常:

但是在Angular...

Angular代码:

generarDataMatrix( articulo: Articulo ): Observable<any> {
  return this.httpClient.get<any>( this.rootUrl + "datamatrix?id=" + articulo.id );
}
generarDataMatrix() {
  this.dbServiceArticulo.generarDataMatrix( this.articuloSeleccionado )
    .subscribe( (res) => {console.log( "res" )});
}

D M给我的两个方案我都做了,都成功了!

很确定默认的 Content-Type header 是 application/json 这就是 Angular 的 HttpClient 试图将字节数组解析为 JSON 的原因。您可以手动将请求的 HttpHeaders 设置为响应内容的正确 Content-Type。 – D M

否则,您可以将请求的 responseType 设置为 'blob':this.httpClient.get(this.rootUrl + '...', { responseType: 'blob' }) ;. – D M