我正在使用 AngularJS 和 Spring 编写应用程序。我想向服务器发送请求并将控制器返回的响应作为文件下载。在控制器中,我有 csv 文件的内容(作为字符串),即1;2;3;4
(1 行,4 列)。将此响应下载为文件的最简单方法是什么?
下面,我发布了我的简化代码。在 Spring 控制器中:
@RequestMapping(value = "/csv", method = GET)
@ResponseBody
public String getCsvFile() {
return getCsvContent();
}
在 javascript (AngularJS) 中
return $http({method: 'GET', url: 'csv/'});
我也试图写入响应流(如下),设置标题,但在客户端我总是将此内容作为字符串获取 - 而不是作为要下载的文件。
@RequestMapping(value = "/csv", method = GET)
@ResponseBody
public void getCsvFile(HttpServletResponse response) {
response.setContentType("application/csv");
response.setHeader("Content-Disposition", "attachment; filename=file.csv");
response.setContentLength(getCsvContent().getBytes().length);
ServletOutputStream out = response.getOutputStream();
out.write(getCsvContent());
out.flush();
out.close();
}
有谁知道如何正确编写控制器的方法以便在客户端将响应下载为文件?