У меня есть конечная точка, которая возвращает набор данных CSV, который будет сохранен с использованием saveas
и Blob
AngularJS Интерфейс работает нормально, в то время как Angular 8 борется. Вот моя Angular 8 реализация
const headers = new HttpHeaders({
Accept: 'text/csv',
});
const options = { headers };
this.httpClient
.post<ExportCsvSettingsViewDto>(this.appConfigService.buildApiUrl(this.loadPath(batchId)), csvDto, options)
.subscribe((fileResult: any) => {
const file = new Blob([fileResult], { type: 'text/csv' });
saveAs(file, this.fileName + '.csv');
});
Это приводит к HttpErrorResponse
заявлению: Object {error: SyntaxError: Неожиданный токен. в JSON at positio…, текст: «1.112.373; en-US Дата Время UTC; Дата Местное время; Bat…»}
Я подозреваю, что это потому, что HttpClient
обрабатывает ответ как JSON
вместо "text/csv"
Это были заголовки запроса:
Connection: keep-alive
Content-Length: 141
Pragma: no-cache
Cache-Control: no-cache
Accept: text/csv
Content-Type: application/json
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
и заголовки ответа:
HTTP/1.1 200 OK
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Content-Type: text/csv
Expires: 0
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
X-UA-Compatible: IE=edge
Content-Length: 191147
Я пытался явно установить "responseType"
в заголовке запроса на "text/csv"
но это просто невозможно. Есть идеи на этот счет?