октет-стрим на угловой - загрузка файла не работает - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь загрузить файл одним нажатием кнопки, API был успешно нажат, я получаю ответ 200, но файл не загружается.Это работает на почтальона.

Мой код показан ниже

/****  click */

  downloadAsset() {
    this.detailsService.getCsvReport(this.jobId).subscribe(data => {});
  }


/**** Service */

getCsvReport(jobId): Observable<Object> {
    const header = { Accept: "application/octet-stream" };
    let endpoint: string = `${Endpoints.REPORT}jobs/${jobId}/filePath?`;
    return this.get(endpoint, header).pipe(
      map(report => {
        return report.data.parentXml;
      })
    );
  }
      <button
            class="btn btn-blue-border"
            style="float: right;"
            (click)="downloadAsset()"
          >
            Download Report
          </button>

Будем благодарны за любые изменения или предложения.

Ответы [ 2 ]

1 голос
/ 24 мая 2019

Вы можете попробовать вот так


getCsvReport(jobId): Observable<Object> {
    const header = { Accept: "application/octet-stream" };
    let endpoint: string = `${Endpoints.REPORT}jobs/${jobId}/filePath?`;
    return this.get(endpoint, header).pipe(
      map(report => {
      const a = document.createElement('a');
      document.body.appendChild(a);
      const blob: any = new Blob([report.data.parentXml], { type: 'octet/stream' });
      const url = window.URL.createObjectURL(blob);
      a.href = url;
      a.download = data.fileName;
      a.click();
      window.URL.revokeObjectURL(url);
      })
    );
  }
0 голосов
/ 24 мая 2019

Я думаю, вам нужно установить тип ответа на ваш запрос.

Пример с http.post:

this.http.post(url + "/getFile", params, { responseType: "blob" }).subscribe(...)

Я надеюсь, что смогу помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...