Я пишу приложение, используя 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();
}
Кто-нибудь знает, как правильно писать метод контроллера, чтобы загрузить ответ в виде файла на стороне клиента?