如何使用Spring控制器强制下载文件?

时间:2015-04-10 11:41:29

标签: spring browser download

我有一个字符串控制器来下载xml文件,但下载窗口每次都打开..

这是我的控制器的代码:

    @RequestMapping(value = "/export", method = RequestMethod.POST)
@ResponseBody
public void export(HttpServletRequest request, HttpServletResponse response) throws JsonGenerationException,
        JsonMappingException, IOException, DatatypeConfigurationException {
    byte[] bytes  = service.exportXML(getUsername());
    String xmlFileName = "filename.xml";
     response.setContentType("application/force-download");
     response.setHeader("Content-Length", String.valueOf(bytes.length));
     response.setHeader("Content-Disposition", "attachment; filename="+xmlFileName);

     response.getOutputStream().write(bytes);
}

我可以对浏览器做什么从不打开下载窗口并立即保存文件?

3 个答案:

答案 0 :(得分:0)

从服务器端无法实现。由于安全原因,如果在浏览器中指定,浏览器将不允许自动下载文件。

例如,如果要在浏览器中自动下载并打开docx文件类型。然后查看此链接How can I open these .docx files from Chrome more quickly

希望你能理解这里的限制。

答案 1 :(得分:0)

尝试添加此内容:

response.setHeader("Content-Transfer-Encoding", "binary");

答案 2 :(得分:0)

我之前尝试过直接打开的txt文件。他们得到了保存而不是开放。