Как сохранить файл из API - PullRequest
0 голосов
/ 05 апреля 2019

Я новичок в угловых и мне нужно знать, как сохранить файл из моего API на компьютере пользователя.В моем API у меня есть DownloadController с методом downloadChapter в / download / chapter / {id}.Когда я вызываю этот метод из Chrome, мой компьютер просто начинает загружать файл главы - и все в порядке.Когда я вызываю этот метод из моего DownloadService в угловом формате, я получаю сообщение об ошибке в консоли: ОШИБКА ОК.

Метод моей главы загрузки:

  downloadChapter(id: number): Observable<Blob> {
    return this.http
      .get<Blob>(`${this.basicPath}/chapter/${id}`)
      .pipe(
        tap((res) => {
            console.log(`response: ${res}`);
          },
          (e) => {
            console.log(`error: ${e} - ???`);
          }, () => {
            console.log('win!');
          }),
      );
  }

В ответе API:

200 ОК, ОК, URL [файл: / Users / lukasz / Рабочая область / Inz / api / booky / uploads / 1/6: Solaris% 20-% 20Maly% 20Apokryf.mp3], [Content-Disposition: "attachment;filename = 6: Solaris% 20-% 20Maly% 20Apokryf.mp3 ", Content-Type:" audio / mpeg ", Content-Length:" 97857000 "]

Как это исправить?Я хочу просто сохранить файл на компьютере пользователя.

1 Ответ

0 голосов
/ 06 апреля 2019

Вот угловой пример 6 загрузки файла из успокоительного API:

Установить файловую заставку: npm install file-saver --save

import { HttpClient } from '@angular/common/http';
import { saveAs } from 'file-saver';

.
.
.
constructor(private http: HttpClient) { }

download() {
    this.http.get('/download/chapter/{id}', {responseType:'blob', observe: 'response'}).subscribe(
      (data : any)=>{
        saveAs(data.body, 'yourfilename.ext');
      },
      (err : HttpErrorResponse)=>{
        console.error('download failed:', err);
      });
}

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