У меня есть приложение Angular 5, которое использует Java Backend с базой данных MySql. Я должен перечислить некоторые пункты продукта. Изображения хранятся в базе данных MySql, и я могу получить ответ изображения через Rest API. Как показать изображения в угловом приложении из Rest API?
Это мой Rest API в проекте Java.
@GetMapping(path="/orderItem/image/{itemId}")
@ResponseStatus(HttpStatus.OK)
public void getImageForOrderItem(@PathVariable("itemId") long itemId, HttpServletResponse response) {
byte[] buffer = orderServiceImpl.getImageForOrderItem(itemId);
if (buffer != null) {
response.setContentType("image/jpeg");
try {
response.getOutputStream().write(buffer);
response.getOutputStream().flush();
response.getOutputStream().close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Угловой запрос на отдых. Но этот код не работает должным образом. Изображения отображаются с пустыми разбитыми изображениями.
getImageForOrderItem(itemId : number) {
this.headers = new HttpHeaders();
this.headers = this.headers.append('Content-Type', 'image/jpeg' );
this.headers = this.headers.append("Authorization", "Basic " + this.bota);
this.options = {headers: this.headers};
return this.http.get(this.baseUrl+"api/1/review/orderItem/image/"+itemId, { headers: this.headers, responseType: 'blob' });
}
this.restService.getImageForOrderItem(item.id).subscribe(
(data:any) => {
this.createImageFromBlob(data);
});
imageToShow: any;
images:Array<any> = new Array();
createImageFromBlob(image: Blob) {
let reader = new FileReader();
reader.addEventListener("load", () => {
this.imageToShow = reader.result;
this.images.push(this.imageToShow);
}, false);
if (image) {
reader.readAsDataURL(image);
}
}