かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

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);
}