検証version: Spring Boot 1.3.5
日本語ファイル名のファイルをダウンロードするときのポイントは3点
- 引数でHttpServletResponseを受け取る。
- レスポンスヘッダに
Content-Disposition
をつける。この時、URLエンコードしたファイル名の前にfilename*=UTF-8''
をつける。 OutputStreamにファイルを書き込む。
@RequestMapping(value = "/download", method = RequestMethod.GET) public String download(HttpServletResponse response) throws IOException { File file = new File("filepath"); response.addHeader("Content-Type", "application/octet-stream"); response.addHeader("Content-Disposition", "attachment; filename*=UTF-8''" + URLEncoder.encode(file.getName(), StandardCharsets.UTF_8.name())); Files.copy(file.toPath(), response.getOutputStream()); return null; }