AngularJS と Spring を使用してアプリケーションを作成しています。サーバーにリクエストを送信し、コントローラーから返されたレスポンスをファイルとしてダウンロードしたいと思います。コントローラーには、csvファイルのコンテンツ(文字列として)、つまり1;2;3;4
(1行、4列)があります。この応答をファイルとしてダウンロードする最も簡単な方法は何ですか?
以下に、簡略化したコードを掲載しました。春のコントローラーで:
@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();
}
クライアント側で応答をファイルとしてダウンロードするために、コントローラーのメソッドを正しく記述する方法を知っている人はいますか?