gpt4 book ai didi

rest - angular 2触发excel下载

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:25:17 25 4
gpt4 key购买 nike

当后端已经在响应中提供下载时,我如何触发 Angular 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);
}
}

该方法被证明有效,(因为进入后端(没有前端)正确触发下载)但现在我想制作一个触发下载的 Angular 2 页面

我已经准备好页面了,我在服务中有这个:

return this._http.get(this.url, {
search: params
});

但现在我不知道如何通过响应触发下载(不知道我应该如何映射它或什么)

最佳答案

一个非常简单的解决方案:如果端点已经触发下载,只需构建端点 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;

关于rest - angular 2触发excel下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43150344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com