Я пытаюсь загрузить файл xls с моим угловым приложением, это работало до angular 8 и вдруг больше не работает. Вот что у меня есть:
export(selectedUsers: any) {
this.getReport(selectedUsers).subscribe(data => this.downloadFile(data));
}
private getReport(selectedUsers: number[]): Observable<Blob> {
const headers = new HttpHeaders({'content-type' : 'application/json',
'Access-Control-Allow-Origin' : '*',
responseType : 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'});
return this.http.post<Blob>(this.globals.api + 'persoon/export', selectedUsers, {headers, 'blob'});
}
private downloadFile(data: Blob) {
console.log('downloading...');
const blob = new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
const url = window.URL.createObjectURL(blob);
window.open(url);
}
В угловой документации упоминалось что-то вроде HttpEvent<Blob>
, я тоже пробовал, но это не сработало. Я пробовал этот похожий вопрос: HttpClient - Как запросить данные не-JSON Но решение также не сработало, поскольку в основном говорилось, что оно не принимает responseType в данной позиции.
Я также проверил заголовки ответа на мой запрос, тип контента также application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Вот мой импорт:
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Mail } from './models/mail';
import { Klant } from './models/klant';
import { GlobalsService } from './globals.service';
import { Observable } from 'rxjs';
Может кто-нибудь указать мнеправильное направление и помочь мне решить эту проблему?
Ошибка моей консоли ПРИМЕЧАНИЕ
Я получил еще одинвопрос после применения принятого решения:
the expected type comes from property 'responseType' which is declared here on type '{ headers?: HttpHeaders | { [header: string]: string | string[]; }; observe?: "body"; params?: HttpParams | { [param: string]: string | string[]; }; reportProgress?: boolean; responseType?: "json"; withCredentials?: boolean; }'
Для этого нужно перейти сюда: Типы свойства 'responseType' несовместимы