Сохраните тело ответа в виде файла с помощью FileSaver и BLOB-объекта. - PullRequest
0 голосов
/ 29 августа 2018

Я хочу скачать и сохранить файл из API. Имя моего файла text.txt, но сохраненный файл называется: _text.txt_, а содержимое этого файла: [object Object]

Это моя функция для загрузки в виде файла:

const options = {
      headers: new HttpHeaders().append('Authorization', this.oAuthService.getAccessToken()),
      params: new HttpParams().append('responseType', 'text'),
      observe: 'response' as 'response'
    }

    return this.http.get(this.fileServerUrl + 'file/download/' + filename + '/' + version, options)
      .subscribe(
        resp => { this.saveToFileSystem(resp)

      });
  }

  private saveToFileSystem(response) {
    const contentDispositionHeader: string = response.headers.get('Disposition');
    const parts: string[] = contentDispositionHeader.split(';');
    const filename = parts[1].split('=')[1];
    filename.replace(/"/g, '');
    console.log(filename);
    console.log(response.body)
    const blob = new Blob([response.body], { type: 'text/plain' });
    saveAs(blob, filename);
  }

вывод первого файла console.log - text.txt, а console.log файла response.body - это тестовый текст ..

Так почему же имя сохраненного файла с _ в начале и конце, а содержимое не является текстом из тела ответа.

Спасибо в Advnace

1 Ответ

0 голосов
/ 29 августа 2018

Попробуйте это:

const blob = new Blob([JSON.stringify(response.body)], { type: 'text/plain' });

А для _text.txt_: Строка является неизменным типом. Так что filename.replace ... не изменит значение имени файла, оно вернет новое значение. Вы должны создать новую переменную:

const newFileName = filename.replace(/"/g, '');
...
saveAs(blob, newFileName);

или просто поместите filename.replace(/"/g, '') в saveAs

saveAs(blob, filename.replace(/"/g, ''));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...