かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

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