Я новичок в Angular.Я начал использовать Angular 7. Я пытаюсь загрузить файл Excel в формате Angular.Вот мой сервисный код.
event.service.ts
getReport(reporturl: string) {
return this.http.get(reporturl, { responseType: 'arraybuffer' })
.pipe(
// tap(data => console.log('getEvent: ' + JSON.stringify(data))),
catchError(this.handleError)
);
}
В моем файле компонента
event.ts
handleExcelDownload(data) {
this.eventService.getReport(`${data}/true`)
.subscribe(
(response: any) => {
console.log(response);
this.showFile(response, "Grid.xlsx");
// let mediaType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
// let blob = new Blob([response], { type: mediaType });
// let filename = 'Grid.xlsx';
// saveAs(blob, filename);
},
(error: any) => this.errorMessage = <any>error
);
}
private showFile(blob: any, filename: string) {
// It is necessary to create a new blob object with mime-type
// explicitly set otherwise only Chrome works like it should
let newBlob = new Blob([blob], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" });
// IE doesn't allow using a blob object directly as link href
// instead it is necessary to use msSaveOrOpenBlob
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(newBlob);
return;
}
// For other browsers:
// Create a link pointing to the ObjectURL containing the blob.
let data = window.URL.createObjectURL(newBlob);
let link = document.createElement('a');
link.href = data;
link.download = filename;
link.click();
setTimeout(() => {
// For Firefox it is necessary to delay revoking the ObjectURL
window.URL.revokeObjectURL(data);
}, 100);
}
скачанный Excel всегда поврежден.Но в моем журнале консоли я получаю буфер массива.Загрузка Excel работает нормально, когда я тестировал на сервере.Пожалуйста, помогите, где я не прав.
** Запрос **
Запрос имеет 200 успехов, и когда я предпросмотрюзапрос, он имеет буфер массива.
Предварительный просмотр ответа.
Но если я открою этоСервер URL-адрес вручную в этот момент файл загружается, и это не повреждено.Пожалуйста, помогите, где я иду не так?Я пробовал много статей в интернете, но ни одна из них не работает.