我想从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;
}
但是我被重定向到主页,并且在服务器和客户端都没有进行任何操作。
你可以帮我解决网址上的请求吗?
答案 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
。