angularjs - Spring获取请求文件未下载
问题描述
我想在单击我的 AngularJS 应用程序中的一个按钮时下载一个文件,该应用程序在具有 Java Spring 后端的 Tomcat 上运行,但没有任何反应。调用后端中的方法,一切似乎都有效....但是我的浏览器没有下载任何东西。
我错过了什么?
这是 AngularJS 代码,它记录Export-Response:[object Object]
:
exportProjects() {
let filteredProjectIds = [];
for (let i in this.filteredProjects) {
for (let x = 0, l = this.filteredProjects[i].length; x < l; x++) {
if (!this.isOldProjectsBundle(this.filteredProjects[i][x])) {
filteredProjectIds.push(this.filteredProjects[i][x].id);
}
}
}
this.$http.get('/profiles/projectWordExport?filteredProjects=' + filteredProjectIds.join(",")).then(response => {
console.log("Export-Response:" + response);
return response;
});
}
这是被调用的 Java 代码(它真的被调用了,已经调试过了,没有发生错误):
@RequestMapping(value = "/projectWordExport", method = RequestMethod.GET)
public void getProjectsWord(HttpServletRequest request, HttpServletResponse response, @RequestParam String filteredProjects) throws Exception {
//Load project objects from input string or load all projects if input empty
List<Project> projects = new java.util.ArrayList<>();
if (filteredProjects.isEmpty()) {
projects = projectRepository.findAll();
} else {
String[] pIds = filteredProjects.split(",");
for (String pId : pIds) {
projects.add(projectRepository.findById(Long.parseLong(pId)));
}
}
response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
response.setHeader("Content-disposition", "attachment;filename=Projektexport.docx");
try {
SaveToZipFile saver = new SaveToZipFile(printer.printProjects(this.prepareProjectExport(projects)));
saver.save(response.getOutputStream());
response.flushBuffer();
} catch (NullPointerException e) {
response.setStatus(500);
response.sendError(500, "Fehler beim exportieren des Tests aufgetreten");
}
}
解决方案
把它放在@RequestMapping 注解中
produces = MediaType.APPLICATION_OCTET_STREAM_VALUE
推荐阅读
- c# - 统一的 C# 的 CS1519
- huawei-mobile-services - 在HMS中,如何为已经发布的新版本应用程序更改应用程序签名?
- rundeck - 节点不显示,控制台显示 xml 解析错误
- sql - 根据从搜索中找到的 IDS 数量插入动态行数
- docker - Kubernetes 以 root 身份创建容器日志
- sql-server - Terraform - Azure - 一起使用“azurerm_windows_virtual_machine”和“azurerm_mssql_virtual_machine” - 但未配置 SQL 存储
- azure - Azure Batch VM 中 CUDA 初始化的执行时间很慢
- excel - 应用条件格式后如何删除它?
- python - 使用 ctypes 将 2D C 数组转换为 Numpy 数组
- swift - 基于更改子视图高度以编程方式增加 UIView 高度