スプリングコントローラからファイルをダウンロードする 質問する

スプリングコントローラからファイルをダウンロードする 質問する

ウェブサイトから PDF をダウンロードする必要があるという要件があります。 PDF はコード内で生成する必要があり、FreeMarker と のような PDF 生成フレームワークの組み合わせになると考えましたiText。もっと良い方法はありますか?

しかし、私の主な問題は、ユーザーが Spring コントローラーを介してファイルをダウンロードできるようにするにはどうすればよいかということです。

ベストアンサー1

@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");

おすすめ記事