我想从前端下载一个文件。该文件在 TestFlow.generateReport
上生成
我运行到最后,但它没有下载任何东西。我在这里错过了什么??
@RequestMapping(value = "/flow/generate-report" , method = RequestMethod.GET)
public @ResponseBody void generateFlowReport(@RequestParam("flowName") String flowName, HttpServletResponse response) {
InputStream resource = TestFlow.generateReport(flowName);
response.setContentType("application/force-download");
response.setHeader("Content-Disposition","attachment; filename=report-" + flowName + ".xlsx");
try {
IOUtils.copy(resource,response.getOutputStream());
response.flushBuffer();
resource.close();
} catch (IOException e) {
e.printStackTrace();
}
}
原始 AJAX 请求无法处理文件下载请求。您必须创建虚拟表单。看到这个问题。并且有很多jQuery插件可以帮助您做到这一点。
而且由于是下载请求,你的控制器方法不应该使用@ResponseBody
,自己接管响应,写完内容后关闭它。