[解決済み】springコントローラからファイルをダウンロードする方法
2022-04-15 23:49:08
質問
ウェブサイトからPDFをダウンロードする必要がある要件があります。PDFはコード内で生成する必要があり、freemarkerとiTextのようなPDF生成フレームワークの組み合わせになるかと思います。何か良い方法はありますか?
しかし、私の一番の問題は、Spring Controllerを通してユーザーがファイルをダウンロードできるようにするにはどうしたらいいかということです。
解決方法は?
@RequestMapping(value = "/files/{file_name}", method = RequestMethod.GET)
public void getFile(
@PathVariable("file_name") String fileName,
HttpServletResponse response) {
try {
// get your file as InputStream
InputStream is = ...;
// copy it to response's OutputStream
org.apache.commons.io.IOUtils.copy(is, response.getOutputStream());
response.flushBuffer();
} catch (IOException ex) {
log.info("Error writing file to output stream. Filename was '{}'", fileName, ex);
throw new RuntimeException("IOError writing file to output stream");
}
}
一般に
response.getOutputStream()
を使えば、何でも書けます。この出力ストリームは、生成されたPDFを置く場所としてジェネレータに渡すことができます。また、送信するファイルの種類がわかっている場合は、以下のように設定することができます。
response.setContentType("application/pdf");
関連
-
[解決済み] Java - JTextFieldが空かどうかを確認する
-
[解決済み] javaで部分クラスを実装する方法
-
[解決済み] SubclipseとJavaHLのインストールで頭を悩ます
-
[解決済み] java.lang.ClassCastException: java.lang.Long を java.lang.Integer にキャストできない(java 1.6
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] ファイルへの追記はどのように行うのですか?
-
[解決済み] Gitで1つのファイルの作業コピーの変更を元に戻す?
-
[解決済み] ファイルの内容からJavaの文字列を作成するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] XX:MaxDirectMemorySizeの既定値
-
[解決済み] 警告: コンテキスト初期化中に例外が発生 - 更新の試みはキャンセルされました。
-
[解決済み] 一部の入力ファイルが非推奨のAPIを使用またはオーバーライドしている
-
[解決済み] double 型を Int 型に変換、切り捨て
-
[解決済み] javascriptでExpression言語を使うには?
-
[解決済み] 型の不一致:ArrayListからListへの変換ができない
-
[解決済み] Java- <T extends Comparable<T>>の意味?
-
[解決済み] java.lang.ClassCastException: java.lang.Long を java.lang.Integer にキャストできない(java 1.6
-
[解決済み] java.io.IOException。DER長の短い読み取り
-
[解決済み] javaでファイルサイズを効率的に取得する