Загрузка файла Gzip из углового не извлекается

#angular #filesaver.js

Вопрос:

У меня есть конечная точка, которая возвращает файл .gz, дело в том, что если я получу ответ конечной точки от почтальона, файл загрузится, и я смогу его успешно извлечь. Но когда я пытаюсь загрузить его нажатием кнопки даже в своем приложении angular, я не могу извлечь файл. Загрузка работает, а не извлечение. Вот мой код:

       this.submissionService.getMatchLog(downloadUrl).subscribe(data => {
    const blob = new Blob([data], {type: 'application/gzip' });
    saveAs(blob, `buildlog.gz`);
    this.loadingMatchLogFile = false;
  });
 

И вот моя услуга:

       public getMatchLog = (URL: string): Observable<string> => {
    const headers = new HttpHeaders().set('Content-Type', 'text/plain; charset=utf-8');
    return this.http
      .get<string>(URL, {headers: headers, responseType: 'text' as 'json'})
      .pipe(
        switchMap((downloadUrl: string) => {
          const headersForGet = new HttpHeaders()
            .set('Content-Disposition', 'attachment; filename="log.txt"')
            .set('Content-Type', 'text/plain; charset=utf-8');
          return this.http.get<string>(downloadUrl, {headers: headersForGet, responseType: 'text' as 'json'});
        }
        ),
        catchError(err => {
          console.log(err);
          return EMPTY;
        })
      );
  }
 

Комментарии:

1. Я столкнулся с чем-то подобным с другим техническим стеком. Попробуйте сохранить его в виде txt-файла, чтобы увидеть, что вы действительно получаете обратно (размер также может указывать на проблему). Моя проблема заключалась в том, что я получил перенаправление или несанкционированный ответ, а не фактический файл, который я ожидал. (таким образом, это был не zip-файл-это был html-текст, сохраненный с расширением zip)