当后端已经在响应中提供下载时,如何在角度2中触发下载?
我的后端提供了这样的API端点:
Workbook userExcelReport = excelReportGenerator.createUserExcelReport(userSurveys);
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition", "attachment; filename=\"" + userFileName + ".xlsx\"");
try {
userExcelReport.write(response.getOutputStream());
userExcelReport.close();
response.flushBuffer();
return new ResponseEntity(HttpStatus.OK);
} catch (IOException e) {
logger.error("The excel workbook could not write to the outputStream ", e);
return new ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
该方法被证明有效,(因为进入后端(没有前端)会正确触发下载)但现在我想创建一个触发下载的角度2页
我的页面有点准备,我在服务中有这个:
return this._http.get(this.url, {
search: params
});
但现在我不知道如何使用响应触发下载(不知道我应该如何映射它或者是什么)
答案 0 :(得分:0)
一个非常简单的解决方案:如果端点已经触发下载,则只需构建端点url(及其查询参数)
this.url += '/api/survey/report/';
this.url += this.adminForm.get('fileType').value;
if (this.adminForm.get('evaluated').value !== null || this.adminForm.get('startDate').value !== null
|| this.adminForm.get('endDate').value !== null) {
this.url += '?';
if (this.adminForm.get('evaluated').value !== null) {
this.url += '&name=';
this.url += this.adminForm.get('evaluated').value;
}
if (this.adminForm.get('startDate').value !== null && this.adminForm.get('startDate').value !== '') {
this.url += '&startdate=';
this.url += this.adminForm.get('startDate').value;
}
if (this.adminForm.get('endDate').value !== null && this.adminForm.get('endDate').value !== '') {
this.url += '&enddate=';
this.url += this.adminForm.get('endDate').value;
}
}
然后只是重定向
window.location.href = this.url;
this.url = environment.apiURL;