在jhipster应用程序中使用window.location下载文件

时间:2017-03-23 09:50:18

标签: javascript angularjs jhipster

我想从Jhipster应用程序中的服务器下载文件(.docx)。 我直接从服务器发回二进制内容。

@GetMapping("/file/{id}")
@Timed
public void getFile(@PathVariable Long id, HttpServletResponse response) throws URISyntaxException, IOException {
    FileInputStream stream = fileService.getFile(id);
    response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
    IOUtils.copy(stream,response.getOutputStream());
    stream.close();
}

我现在希望用户能够下载该文件。

在我的某个页面的控制器中,我添加了此功能,以测试下载(或者我直接在浏览器中输入网址):

function dwl (id) {
    window.location = "http://localhost:8080/#/file/"+id;
}

但是我被重定向到主页,并且在服务器和客户端都没有进行任何操作。

你可以帮我解决网址上的请求吗?

1 个答案:

答案 0 :(得分:1)

http://localhost:8080/#/file/123 http://localhost:8080/file/123的网址相同

前者只需加载http://localhost:8080/ /file/123作为location hash,而http://localhost:8080/file/123实际上会向您的服务器发送/file/123路径请求。

要下载文件,您需要将用户导航到后者:

window.location = "http://localhost:8080/file/" + id;

也就是说,您可能不希望让他们离开您的应用程序 - 在这种情况下,您可能最好使用window.open