JSP File Download (SVNKit)

Status
Nicht offen für weitere Antworten.

Sempah

Bekanntes Mitglied
Hallo zusammen,

ich habe ein kleines Problem mit einem FileDownload in JSP.

Hiermit klappt ein Download (File lokal vorhanden)

Code:
try {
	   String filename = "C:\\file1.txt";

	   response.setContentType("APPLICATION/OCTET-STREAM");
	   String disHeader = "Attachment; Filename=\"myFile.txt\"";
	   response.setHeader("Content-Disposition", disHeader);

	   File fileToDownload = new File(filename);
	   FileInputStream fileInputStream = new FileInputStream(fileToDownload);
	   int i;
	   while ((i=fileInputStream.read())!=-1)
	   {
	      out.write(i);
	   }
	   fileInputStream.close();
	   out.close();
	   }catch(Exception e) // file IO errors
	   {
	   e.printStackTrace();
	}

Mein Problem ist jedoch das sich die zu downloadene Datei nicht auf meinem FileSystem befindet, sondern in einem Subversion Repository.


Code:
getFile(String path, long revision, Map properties, OutputStream contents)
          Fetches the contents and/or properties of a file located at the specified path in a particular revision.

also mit: repository.getFile("meinPfadZumRepository/Datei.txt", -1, properties, OUTPUTSTREAM);
kann ich die Datei in einen Output Stream schreiben.

Wie könnte ich nun den DL realisieren?
 

Sempah

Bekanntes Mitglied
Habe es jetzt auf eine andere Weise hinbekommen und kann die Datei auch herunterladen.

Gibt es einen BinaryOutputStream? bzw. ist es möglich Word Dokumente mit Formatierung in einen OutputStream zu laden um es danach zu downloaden?

txt.files bzw sonstige Quellcode-Dateien funktionieren, nur wie könnte ich mit PDF's/Images/Docs etc umgehen?
 
M

maki

Gast
Sempah hat gesagt.:
Habe es jetzt auf eine andere Weise hinbekommen und kann die Datei auch herunterladen.

Gibt es einen BinaryOutputStream? bzw. ist es möglich Word Dokumente mit Formatierung in einen OutputStream zu laden um es danach zu downloaden?

txt.files bzw sonstige Quellcode-Dateien funktionieren, nur wie könnte ich mit PDF's/Images/Docs etc umgehen?
Mit einem Stream Servlet ;)

JSPs sind dafür nicht geeignet, da JSP eine Präsentationstechnologie für Textstreams (HTML) sind, das verträgt sich nicht mit binären Daten.
 
M

maki

Gast
>> ... habe im Moment noch keine Ahnung wie ich das in meine JSP einbaue.

Gar nicht.

Einen link zu deinem Servlet solltest du anzeigen.
 

Sempah

Bekanntes Mitglied
Noch eine Frage:

Da ich den ganzen Java Code ehh in einer Klasse später auslagere, was hat mein Binär Download dann mit JSP zu tun?
Also so z.B:

public class Aktionen {

public downloadFile(SVNRepository, filepath, ...) {
repository.getFile(filepath, ...);
// Java Code zum herunterladen der Datei
}


und in der JSP rufe ich dann die Function auf, sofern z.b. ein bestimmter request Parameter gesetzt ist.
 
M

maki

Gast
>> Da ich den ganzen Java Code ehh in einer Klasse später auslagere, was hat mein Binär Download dann mit JSP zu tun?

Nicht sicher ob ich die Frage verstanden habe, aber prinzipiell kannst du die Funktionalität natürlich auslagern, der Aufruf muss aber immer noch auf einem Servlet erfolgen.
 

Sempah

Bekanntes Mitglied
Hallo, ich mal wieder :)

Verschiedene Aktionen funktionieren mittlerweile annähernd akzeptabel und jetzt möchte ich die Funktionen zusammenfassen.
Ich habe mehrere JSP Dateien und hatte eigtl vor ein "main"-JSP Datei zu erstellen, in der ich die anderen JSP Dateien include.


Habe jetzt z.B. eine add_dir.jsp und eine add_file.jsp, in der ich jeweils eine Instanz meines Repositories erstelle und natürlich darauf zugreife.

Wenn ich nun die 2 Aktions-JSP's in der main.jsp includen möchte, bekomme ich einen Fehler (duplicate local variable repository ...), was natürlich verständlich ist.

main.jsp:
<%@ include file="add_dir.jsp" %>
<%@ include file="add_file.jsp" %>

Die imports / Instanz Generierung innerhalb der main.jsp machen und aus den aktions jsp's herausnehmen geht ja auch nicht ;(
 
M

maki

Gast
Einfache JSP inkludes sind sinnfrei, da sie keinen Kontext haben (variablen etc. ;)), es gibt Frameworks die diese Lücke schliessen, zB. Tiles.
 

Sempah

Bekanntes Mitglied
Erstmal danke für die Antwort, aber ich komme von einem Problem ins Nächste, bzw von der einen neuen "Technik" in die nächste. Wollte es eigtl alles bei JSP belassen (recht simpel halten), jedoch kommt da schon "Servlets", "Tiles", TLD, EL, Struts, ... hinzu
 
M

maki

Gast
Jaja, WebApps in Java sind alles anderes alles Simpel ;)

JSP nutzt dir gar nix ohne Servlets zu verstehen, da sollte man anfangen.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben