Xpert.ivy Code Rezept: File Download mit p:fileDownload

Problem

Sie wollen eine Datei zum Download anbieten.

Lösung

Mit p:fileDownload kann man einen beliebigen (File)InputStream herunterladen.

SVN

Sie können das fertige Projekt per SVN von http://xpert-ivy-hacker-source-code.googlecode.com/svn/trunk/Forms in den Xpert.ivy Designer importieren.

Code

Die Demo File Download Demo zeigt wie man eine Datei herunterladen kann.

Um einen Download zu initialisieren benötigt man einen p:commandButton (oder p:commandLink) und ein p:fileDownload.

Code-Snippet 1: Code für File Download

Wichtig beim p:commandButton ist, dass das ajax Attribut auf false gesetzt ist. Grund dafür ist, dass man Files nicht per AJAX herunterladen kann.

Das value Attribut von p:fileDownload zeigt auf ein StreamedContent Objekt. Das ist das Objekt bzw. das File das man herunterladen will.

Code-Snippet 2: StreamedContent Objekt erstellt

In der Logic erstellen wir ein DefaultStreamedContent Objekt, welches das File an den Browser sendet.

Wichtig ist auch, dass der FileInputStream nicht per close() geschlossen wird. Dies hätte zur Folge, dass der Download fehlschlägt.

Das schliessen macht das DefaultStreamedContent automatisch nachdem der Download abgeschlossen ist.

Weiterführende Ressourcen

Über den Author: Heinrich Spreiter ist der Gründer von xpertivyhacker.ch. Kontaktieren Sie ihn auf Xing und Twitter

Melden Sie sich für den Xpert.ivy hacker Newsletter an und Sie erhalten immer die neusten Tutorials und Tricks zu Xpert.ivy sobald sie publiziert werden.

Ihre Email Adresse wird nur für diesen Newsletter verwendet und nicht an dritte weitergegeben.

Keine Kommentare:

Kommentar veröffentlichen

Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.