首页 > 解决方案 > 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");
        }
    }

标签: angularjsspringdownload

解决方案


把它放在@RequestMapping 注解中

produces = MediaType.APPLICATION_OCTET_STREAM_VALUE

推荐阅读