実現したいこと
CSV出力ボタンを押したらGoogle Chromだと右上にダウンロードされるようにしたいです。
前提
ここに質問の内容を詳しく書いてください。
現在springbootのバージョンアップ(2.2→2.7)をしているのですが、2.2環境で動いていた機能が意図しない動作をするようになってしまいました。
今起きてしまってる現象はCSV出力という画面上のボタンをクリックするとダウンロードされるのではなくページに表示されるようになってしまってます。以前まではクリックするとよくあるブラウザの右上にダウンロードされる状態だったのですが...
依存関係が悪いのかソースが悪いのか、また現在STSをeclipseで動かしてるのですがその設定がダメなのか分からず立ち往生してます。
発生している問題・エラーメッセージ
The HTTP response header [Content-Disposition] with value [attachment; filename="サバイブ.csv"; filename*=UTF-8''%E3%82%B5%E3%83%90%E3%82%A4%E3%83%96.csv] has been removed from the response because it is invalid java.lang.IllegalArgumentException: The Unicode character [サ] at code point [12,469] cannot be encoded as it is outside the permitted range of 0 to 255
該当のソースコード
JAVA
1コントローラー 2@PostMapping(value = "/download/csv, params="Btn") 3 public ResponseEntity<byte[]> download() throws IOException { 4 HttpHeaders headers = new HttpHeaders(); 5 downloadHelper.addContentDisposition(headers, "サバイブ.csv"); 6 return new ResponseEntity<>(getCsvText().getBytes("MS932"), headers, HttpStatus.OK); 7 } 8 9 10DownloadHelper 11 12import java.io.UnsupportedEncodingException; 13import java.nio.charset.StandardCharsets; 14import org.springframework.http.HttpHeaders; 15import org.springframework.stereotype.Component; 16import org.springframework.web.util.UriUtils; 17 18@Component 19public class DownloadHelper { 20 private static final String CONTENT_DISPOSITION_FORMAT 21 = "attachment; filename=\"%s\"; filename*=UTF-8''%s"; 22 public void addContentDisposition(HttpHeaders headers, String fileName) 23 throws UnsupportedEncodingException { 24 String headerValue = String.format(CONTENT_DISPOSITION_FORMAT, 25 fileName, UriUtils.encode(fileName, StandardCharsets.UTF_8.name())); 26 headers.add(HttpHeaders.CONTENT_DISPOSITION, headerValue); 27 } 28 29} 30 31
試したこと
サバイブをtestなどアルファベットにすると以前と同じようにダウンロードが始まります。
補足情報(FW/ツールのバージョンなど)
springframeworkは5.3.30
バージョンアップに伴いspring-webは5.2.2→5.3.30に変更になってました。
springbootは2.2.2→2.7.17です。
何か試してみたら良いことや解決策がある方是非ご教授お願いします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/11/26 09:49