Я мог бы решить проблему самостоятельно, и вот решение;
Ошибка http: получить запрос от вашего углового интерфейса.Когда ответ получен, обработайте ответ и затем преобразуйте его в изображение.Ниже приведен пример кода.
Контроллер покоя
@RequestMapping(path="/products/test", method=RequestMethod.GET)
(productService.getImageString(1),HttpStatus.OK);
public TestString getStringImage() {
return productService.getImageString(1);
}
POJO TestString
package com.example.demo.model;
public class TestString {
String testString;
public String getTestString() {
return testString;
}
public void setTestString(String testString) {
this.testString = testString;
}
}
Класс ProductService
public TestString getImageString(int productID) {
ProductDetails prdDtls = productDao.findById(productID).getProductDetails();
String encodeBase64;
encodeBase64 = Base64.getEncoder().encodeToString(prdDtls.getIcon());
TestString testStr = new TestString();
testStr.setTestString(encodeBase64);
return testStr;
}
productDao.findById(productID)
возвращаетпродукт и продукт POJO
package com.example.demo.model;
import javax.persistence.*;
@Entity
public class Product {
@Id
@Column(name="Product_ID")
// @GeneratedValue
int productID;
@Column(name="Product_Name")
String productName;
@Column(name="Product_Type")
String productType;
@OneToOne
@JoinColumn(name = "Product_ID", nullable = false, insertable=false, updatable=false)
private ProductDetails productDetails;
public ProductDetails getProductDetails() {
return productDetails;
}
public void setProductDetails(ProductDetails productDetails) {
this.productDetails = productDetails;
}
public int getProductID() {
return productID;
}
public void setProductID(int productID) {
this.productID = productID;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public String getProductType() {
return productType;
}
public void setProductType(String productType) {
this.productType = productType;
}
@Override
public String toString() {
return "Product [productID=" + productID + ", productName=" + productName + ", productType=" + productType
+ ", productDetails=" + productDetails + "]";
}
}
ProductDetails POJO
package com.example.demo.model;
import javax.persistence.*;
@Entity
public class ProductDetails {
@Id
@Column(name="Product_ID")
// @ManyToOne
int productID;
String productDescription;
@Lob
@Column(name="icon")
byte[] icon;
@Lob
@Column(name="image")
byte[] image;
public byte[] getIcon() {
return icon;
}
public void setIcon(byte[] icon) {
this.icon = icon;
}
public byte[] getImage() {
return image;
}
public void setImage(byte[] image) {
this.image = image;
}
public int getProductID() {
return productID;
}
public void setProductID(int productID) {
this.productID = productID;
}
public String getProductDescription() {
return productDescription;
}
public void setProductDescription(String productDescription) {
this.productDescription = productDescription;
}
}
Это был мой бэкэнд.Вот мой угловой код:
getImageString(): Observable<any>{
return this.http.get<any>("http://localhost:8080/products/test").pipe(retry(3),catchError(this.errorHandler));
}
Вышеуказанный метод вызывается следующим компонентом
import { Component, OnInit, Pipe } from '@angular/core';
import { Location } from '@angular/common';
import { ActivatedRoute, ParamMap } from '@angular/router';
import { error } from '@angular/compiler/src/util';
import { ProductServiceService } from 'src/app/product-service.service';
import { ProductDetails } from 'src/app/product-details';
import {DomSanitizer} from '@angular/platform-browser';
@Component({
selector: 'app-product-details',
templateUrl: './product-details.component.html',
styleUrls: ['./product-details.component.css']
})
export class ProductDetailsComponent implements OnInit {
imageSrc: any;
testStr: {'testString': string};
constructor(private sanitizer: DomSanitizer) { }
ngOnInit() { }
getImageString(){
this.productService.getImageString().subscribe(data=>{
this.testStr=data;
this.imageSrc=this.sanitizer.bypassSecurityTrustResourceUrl('data:image/jpg;base64,'
+ this.testStr.testString);
},error=>{
let txt: any;
let k: any;
txt = '';
for (k in error) {
txt += error[k];
}
console.log('Image could not be fetched '+txt);});
}
И, наконец, мой HTML-код
<button class="btn btn-primary" (click)="getImageString()">Get Image</button>
<div *ngIf="imageSrc!=null">
<img [src]="imageSrc">
</div>