Heim >Java >javaLernprogramm >Wie lade ich mit Spring Controllern dynamisch generierte Dateien herunter?

Wie lade ich mit Spring Controllern dynamisch generierte Dateien herunter?

Susan Sarandon
Susan SarandonOriginal
2024-12-23 13:16:23968Durchsuche

How to Download Files Generated Dynamically Using Spring Controllers?

Dateien von Spring Controllern herunterladen

Viele Anwendungen erfordern den Download von Dateien von einer Website. In einigen Fällen werden diese Dateien dynamisch mithilfe eines Frameworks wie Freemarker und einer PDF-Generierungsbibliothek wie iText generiert. Dies wirft jedoch die Frage auf, wie Benutzern ermöglicht werden kann, die Datei über einen Spring Controller herunterzuladen.

Die Lösung besteht darin, das HttpServletResponse-Objekt zu verwenden, um die Datei in den Ausgabestream zu schreiben. Dies kann mit dem folgenden Code erreicht werden:

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

}

Sobald der Ausgabestream zugänglich ist, kann er als Ziel für das vom PDF-Generator generierte PDF verwendet werden. Darüber hinaus kann durch die Einstellung des Content-Type auf „application/pdf“ der richtige Dateityp für den Browser angegeben werden.

Das obige ist der detaillierte Inhalt vonWie lade ich mit Spring Controllern dynamisch generierte Dateien herunter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn