コントローラからfileDL(File file)に引数を渡してリターンするだけで、ダウンロードできるようになりました。
java
1@Component
2public class DownloadHelper {
3 private static final String CONTENT_DISPOSITION_FORMAT
4 = "attachment; filename=\"%s\"; filename*=UTF-8''%s";
5
6 public void addContentDisposition(HttpHeaders headers, String fileName)
7 throws UnsupportedEncodingException {
8 headers.add(HttpHeaders.CONTENT_DISPOSITION,
9 String.format(CONTENT_DISPOSITION_FORMAT,
10 fileName, UriUtils.encode(fileName, StandardCharsets.UTF_8.name())));
11 }
12
13 public ResponseEntity<byte[]> fileDL(File file) throws Exception {
14 HttpHeaders headers = new HttpHeaders();
15 addContentDisposition(headers, file.getName());
16 try (FileInputStream inputStream = new FileInputStream(file)) {
17 return new ResponseEntity<>(IOUtils.toByteArray(inputStream), headers, HttpStatus.OK);
18 } catch(Exception e) {
19 return new ResponseEntity<>("error end".getBytes(), headers, HttpStatus.OK);
20 }
21 }
22}
思っていたよりコントローラ周りがキレイに収まったので、ありがたいです。