Spring コントローラーからのファイルのダウンロード
多くのアプリケーションでは、Web サイトからファイルをダウンロードする必要があります。場合によっては、これらのファイルは、Freemarker などのフレームワークや iText などの PDF 生成ライブラリを使用して動的に生成されます。ただし、これにより、ユーザーが Spring コントローラーを通じてファイルをダウンロードできるようにする方法が問題となります。
解決策には、HttpServletResponse オブジェクトを使用してファイルを出力ストリームに書き込むことが含まれます。これは、次のコードで実現できます。
@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"); } }
出力ストリームにアクセスできるようになると、PDF ジェネレーターによって生成された PDF の宛先として使用できます。さらに、Content-Type を「application/pdf」に設定すると、ブラウザーに正しいファイル タイプを指定できます。
以上がSpring コントローラーを使用して動的に生成されたファイルをダウンロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。