Rumah >Java >javaTutorial >Bagaimana untuk Muat Turun Fail Dijana Secara Dinamik Menggunakan Pengawal Spring?

Bagaimana untuk Muat Turun Fail Dijana Secara Dinamik Menggunakan Pengawal Spring?

Susan Sarandon
Susan Sarandonasal
2024-12-23 13:16:23975semak imbas

How to Download Files Generated Dynamically Using Spring Controllers?

Memuat Turun Fail daripada Pengawal Spring

Banyak aplikasi memerlukan muat turun fail daripada tapak web. Dalam sesetengah kes, fail ini dijana secara dinamik menggunakan rangka kerja seperti Freemarker dan perpustakaan penjanaan PDF seperti iText. Walau bagaimanapun, ini menimbulkan isu tentang cara membenarkan pengguna memuat turun fail melalui Pengawal Spring.

Penyelesaian melibatkan penggunaan objek HttpServletResponse untuk menulis fail ke aliran output. Ini boleh dicapai dengan kod berikut:

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

}

Setelah strim output boleh diakses, ia boleh digunakan sebagai destinasi untuk PDF yang dijana oleh penjana PDF. Selain itu, dengan menetapkan Jenis Kandungan kepada "aplikasi/pdf", jenis fail yang betul boleh ditentukan untuk penyemak imbas.

Atas ialah kandungan terperinci Bagaimana untuk Muat Turun Fail Dijana Secara Dinamik Menggunakan Pengawal Spring?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn