Spring コントローラーからの PDF ファイルのダウンロード
背景:
Web アプリケーションからのファイルの効率的なダウンロードは一般的な要件です。この記事では、生成された PDF ファイルを Spring コントローラーからダウンロードする際の課題について説明します。
PDF ファイルの生成:
PDF ファイルを生成するには、Freemarker テンプレートとiText などの PDF 生成フレームワーク。これにより、ユーザー入力またはその他のデータに基づいて PDF コンテンツを動的に生成できます。
コントローラを介したファイルのダウンロード:
Spring コントローラを介したファイルのダウンロードを有効にするには:
コントローラーの作成メソッド:
ダウンロード リクエストを処理するコントローラー メソッドを作成します。通常、これには @RequestMapping アノテーションを使用してメソッドを特定のリクエスト パスにマップすることが含まれます。例:
@RequestMapping(value = "/download/pdf/{fileName}", method = RequestMethod.GET) public void downloadPdf(@PathVariable("fileName") String fileName, HttpServletResponse response) { ... }
応答の構成:
ファイルの種類を示す応答ヘッダーを設定し、ファイルの種類を指定します。保存するファイル名。 PDF ファイルの場合、次を使用します:
response.setContentType("application/pdf"); response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
ファイル データをレスポンスにコピーします:
org.apache.commons.io.IOUtils を使用します。 PDF データを入力ストリームから応答の出力に転送する copy メソッドstream:
IOUtils.copy(inputStream, response.getOutputStream());
コード例:
次のコード スニペットは、PDF ファイル ダウンロード用のコントローラー メソッドの実装を示しています。
@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 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"); } }
以上が生成された PDF ファイルを Spring コントローラーから効率的にダウンロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。