從 Spring 控制器下載檔案
許多應用程式需要從網站下載檔案。在某些情況下,這些文件是使用 Freemarker 等框架和 iText 等 PDF 生成庫動態產生的。然而,這就提出瞭如何允許使用者透過 Spring Controller 下載檔案的問題。
解決方案涉及使用 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中文網其他相關文章!