ホームページ >Java >&#&チュートリアル >生成された PDF ファイルを Spring コントローラーから効率的にダウンロードするにはどうすればよいですか?

生成された PDF ファイルを Spring コントローラーから効率的にダウンロードするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-23 18:00:24758ブラウズ

How to Efficiently Download Generated PDF Files from Spring Controllers?

Spring コントローラーからの PDF ファイルのダウンロード

背景:

Web アプリケーションからのファイルの効率的なダウンロードは一般的な要件です。この記事では、生成された PDF ファイルを Spring コントローラーからダウンロードする際の課題について説明します。

PDF ファイルの生成:

PDF ファイルを生成するには、Freemarker テンプレートとiText などの PDF 生成フレームワーク。これにより、ユーザー入力またはその他のデータに基づいて PDF コンテンツを動的に生成できます。

コントローラを介したファイルのダウンロード:

Spring コントローラを介したファイルのダウンロードを有効にするには:

  1. コントローラーの作成メソッド:
    ダウンロード リクエストを処理するコントローラー メソッドを作成します。通常、これには @RequestMapping アノテーションを使用してメソッドを特定のリクエスト パスにマップすることが含まれます。例:

    @RequestMapping(value = "/download/pdf/{fileName}", method = RequestMethod.GET)
    public void downloadPdf(@PathVariable("fileName") String fileName, HttpServletResponse response) {
    ...
    }
  2. ファイル データの取得:
    PDF データを InputStream として取得します。これには、PDF 生成ロジックの呼び出しや、保存場所からのファイルの取得が含まれる場合があります。
  3. 応答の構成:
    ファイルの種類を示す応答ヘッダーを設定し、ファイルの種類を指定します。保存するファイル名。 PDF ファイルの場合、次を使用します:

    response.setContentType("application/pdf");
    response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
  4. ファイル データをレスポンスにコピーします:
    org.apache.commons.io.IOUtils を使用します。 PDF データを入力ストリームから応答の出力に転送する copy メソッドstream:

    IOUtils.copy(inputStream, response.getOutputStream());
  5. レスポンスをフラッシュ:
    レスポンスをフラッシュして、PDF ファイルをクライアントに送信します。これにより、ダウンロード プロセスが開始されます。

コード例:

次のコード スニペットは、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。