かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

Spring Bootでファイルダウンロードをする

Spring Bootでファイルのダウンロードを試してみました。HttpServletResponseを引数に受け取ってServlet時代と同じように書き込みをする方法もあるみたいなのですが、今回はResponseEntityというクラスを使ってみました。

こいつを使ってContent-Typeなんかを設定してBodyを設定してやればOKっぽいです。こんなコードになりました。

@RequestMapping(value = "/download", method = RequestMethod.GET)
public ResponseEntity<byte[]> download() throws IOException {
    HttpHeaders h = new HttpHeaders();
    h.add("Content-Type", "text/csv; charset=MS932");
    h.setContentDispositionFormData("filename", "hoge.csv");
    return new ResponseEntity<>("あ,い,う,え,お".getBytes("MS932"), h, HttpStatus.OK);
}