Dateidownload mit Java, Struts 2 und AJAX

8

Ich möchte Datei-Download mit Java, Struts2 und Ajax geben.

Auf meiner html-Seite gibt es eine Schaltfläche namens "export", die auf einen Ajax-Aufruf klickt, der eine Abfrage ausführt und eine .xls-Datei mit Code erstellt, und ich möchte diese Datei dem Benutzer zum Download geben, ohne sie zu speichern auf der Festplatte.

Kann jemand das mit struts2 und ajax in Java machen?

Gibt es ein Beispiel?

Lass es mich wissen, wenn du mehr Details von mir brauchst ...

Danke.

amar4kintu

    
amar4kintu 23.01.2010, 07:26
quelle

6 Antworten

11

In diesem Fall müssen Sie AJAX nicht verwenden. Übergeben Sie einfach das Formular an Ihre Struts-Aktion und nutzen Sie das Stream-Ergebnis Typ.

Beispiel:

In Ihrem Struts-XML:

%Vor%

Ihre Aktion liefert dann ein public InputStream getInputStream() , um die Daten weiterzuleiten.

Ich nehme an, dass die Bibliothek, die Sie zum Generieren der Excel-Dateien verwenden ( POI ?), die Ausgabe in ein beliebiges% schreiben kann. co_de%.

Eine schnelle Möglichkeit, das in ein OutputStream zu konvertieren:

%Vor%     
ZoogieZork 23.01.2010, 09:15
quelle
2

Nur zu Ihrer Information, wir können das gleiche tun mit Annotation:

%Vor%     
Krishan Babbar 20.04.2011 12:52
quelle
2

Als Folge der Frage von amar4kintu zu Dateien, die als exportReport.action anstelle von report.xls gespeichert wurden, geschieht dies in IE, wenn das folgende Format in Ihrer struts.xml-Datei nicht befolgt wird:

%Vor%

Es scheint, als ob die Zeile contentDisposition insbesondere anzeigen muss, dass die Datei eine Anlage ist und der Dateiname von Anführungszeichen umgeben ist.

    
web guy 29.12.2010 05:33
quelle
0

Ich würde diese Art von Annotation für die Action-Klasse verwenden:

%Vor%     
Aleksey Otrubennikov 29.04.2010 10:27
quelle
0

Ein besserer Ansatz zum Pipe-Outstream zu einem Eingangsstrom wird nachstehend erläutert im Gegensatz zu der Antwort von ZoogieZork oben

%Vor%

Der Vorteil dieser Methode besteht darin, dass der gesamte Puffer nicht im Speicher gespeichert wird, sondern mit einem kleinen internen Ringpuffer gepiped wird. Dies ist sowohl hinsichtlich des Arbeitsspeichers als auch des CPU-Aufwands besser.

Referenz: Konvertieren Sie einen Java OutputStream in einen InputStream

    
Gaurav Kumar 08.05.2012 17:06
quelle
0

atlast, ich konnte es wie folgt lösen .. Ich schrieb folgende Zeile in meiner Action-Class-Funktion und ich konnte Datei mit dem Namen report.xls anstelle von ExportReport.action herunterladen. Ich weiß nicht genau ... warum?

%Vor%

Das Folgende ist in meiner struts.xml -Datei. Ich habe <contentDispositin> param daraus entfernt, weil es nicht von struts.xml file funktioniert hat, und ich habe es in meine Action-Java-Datei wie oben eingefügt.

%Vor%

Ich hoffe, das wird jemandem helfen.

Danke.

amar4kintu

    
amar4kintu 23.01.2010 14:31
quelle

Tags und Links