Как отобразить изображение, полученное из БД в ангуляр?

Рейтинг: 0Ответов: 0Опубликовано: 05.02.2023

Данные, которые я получаю с БД содержат всю инфу, включая фото, приходят одним ГЕТОМ. Выводится всё, кроме фото. Как можно отобразить аватарку пользователя из массива searcherImages в таком случае?

Контейнер карточки.

 <div class="form-group">
              <label for="phone">Image</label>
              <input type="file"  multiple value="select" #selectFile  class="form-control" name="searcherImages"
                 (change)="onImageSelected($event)">
            </div>

  <div class="container" id="main-container">
     <div class="row">
       <div *ngFor="let searcher of searchers" class="col-md-6 col-xl-3">
          <div class="card m-b-30">
             <div class="card-body row">
                <div class="col-6" *ngFor="let file of searcher.searcherImages; ">
                   <img [src]="file.url" >
                </div>
                <div class="col-6 card-title align-self-center mb-0">
                   <h5>{{searcher?.name}}</h5>
                   <p class="m-0">{{searcher?.gender}}</p>
                </div>
             </div>
             <ul class="list-group list-group-flush">
                <li class="list-group-item"><i class="fa fa-envelope float-right"></i>{{searcher?.email}}</li>
                <li class="list-group-item"><i class="fa fa-phone float-right"></i>Phone : {{searcher?.phone}}</li>
             </ul>
             <div class="card-body">
                <div class="float-right btn-group btn-group-sm">
                   <a (click)="onOpenModal(searcher, 'edit')" class="btn btn-primary tooltips" data-placement="top" data-original-title="Edit"><i class="fa fa-pencil"></i> </a>
                   <a (click)="onOpenModal(searcher, 'delete')" class="btn btn-secondary tooltips" data-placement="top" data-original-title="Delete"><i class="fa fa-times"></i></a>
                </div>
             </div>
          </div>
       </div>
    </div>

Интерфейс, с помощью которого я преобразовывю изображение в БЛОБ.

import { SafeUrl } from "@angular/platform-browser"

export interface FileHandle  {
    file: File,
    url: SafeUrl
}

Обрабатываю и отправляю фото на бэк.

 public onAddSearcher(addForm: NgForm) {

    const searcherFormData = this.prepareFormData(this.searcher);

    document.getElementById('add-searcher-form')?.click();
    this.searcherService.addSearcher(searcherFormData).subscribe({
      next: (response: Searcher) => {
        this.getSearchers();
        addForm.reset();
      },
      error: (error: HttpErrorResponse) => {
        alert(error.message);
        addForm.reset();
      }
    });
  }

  prepareFormData(searcher: Searcher): FormData {
    const formData = new FormData();

    formData.append(
      'searcher',
      new Blob([JSON.stringify(searcher)], {type: 'application/json'})
    );
    
    for(var i = 0; i < searcher.searcherImages.length; i++) {
      formData.append(
        'imageFile',
        searcher.searcherImages[i].file,
        searcher.searcherImages[i].file.name
      );
    }
    return formData;
  }
  onImageSelected(event) {
    if(event.target.files) {
      const file = event.target.files[0];
      
      const fileHandle: FileHandle = {
        file: file,
        url:  this.sanitazer.bypassSecurityTrustUrl(
          window.URL.createObjectURL(file)
        )
      }

      this.searcher.searcherImages.push(fileHandle);
    }
  } 
}

Данные с бэка

Фото не отображается

Ответы

Ответов пока нет.