Tomcat -> Binary aus DB lesen und an Browser/Client sende

Status
Nicht offen für weitere Antworten.

nauni77

Mitglied
Hallo,
hier läuft ein Tomcat 5.X und j2ee 1.5_6.

Ich habe mit org.apache.commons.io es geschafft Dateien hochzuladen und diese in eine Datenbank zu speichern. Nun habe ich das Problem, dass ich diese Dateien nun wieder von Clients runterladen lassen möchte - PDF, DOC, JPG ... es gibt alle möglichen Dateitypen, welche ich zu den Clients senden möchte.

Ich habe bereits das Longblob aus der Datenbank ausgelesen und einen InputStream davon:

Code:
ResultSet rs = meineFunktionDieDasRSAbholt();
while (rs.next) {
  java.io.InputStream is = rs.getBinaryStream("file");
  // Jetzt muss ich diesen Stream an den Client schicken ... aber wie???
}

Wie kann ich nun "is" an den Client schicken?? Ich suche heute schon den ganzen Tag nach der Lösung - hoffe einer von Euch kann mir weiterhelfen. Das wäre super.

Bei PHP gab es eine Funktion die das erledigt hat. Hoffe soetwas gibt es beim Tomcat (J2EE) auch. Leider finde ich diese Methode nicht. :-(

Vielen Dank im Voraus und schöne Grüße

Oli
 

bronks

Top Contributor
Evtl. geht das so direkt:

Code:
response.getOutputStream().write(is);
 

nauni77

Mitglied
Hi,
mit hilfe des Tipps habe jetzt das Schicken der Datei hinbekommen. Vielen Dank! Musste lediglich noch einige Übergabewerte abändern. Weiter unten steht wie es funktioniert hat. :) Leider ist es noch nicht 100% gelöst.

Leider ist nun noch der vorgeschlagene Name (zum lokalen Speichern) falsch. Wie kann ich das bereinigen?

Im Moment nimmt der Browser den Namen der Datei die vom Browser aufgerufen wurde. Also die JavaServerPage: xyz.jsp.

Code:
java.sql.ResultSet rsf = myOne.getFile(request.getParameter("fid"));
while (rsf.next()) {
	int b;
	
	response.setContentType(rsf.getString("contentType"));
	java.io.InputStream is = rsf.getBinaryStream("file");
	OutputStream os = response.getOutputStream();
	while ((b = is.read()) != -1) {
		os.write(b);
	}
	os.close();		
}

Wie kann ich hier den vorgeschlagenen Namen einstellen? Mit setHeader(String name, String value) passiert nichts ... hoffe es kennt jemand von Euch die Lösung hierzu. Also mit welcher Methode kann ich den "zu speichern unter Namen" einstellen?

tia

Oli
 
G

Guest

Gast
Code:
response.setHeader("Content-Disposition","attachment; filename=\"Name.Erweiterung\"");
 

nauni77

Mitglied
Hallo,
danke für den Hinweis. Ich habe den "Content-Disposition"-Header wie im vorherigen Posting gesetzt. Wenn ich nun im Browser für den Link "speichern unter" wähle, dann kommt leider nicht der dort angegebene Name.

Desweiteren habe ich es mit "inline" anstatt attachment versucht. Oder einfach nur mit "filename="xyz.abc". Leider alles ohne Erfolg. :-(

Code:
response.setHeader("Content-Disposition", "attachment: filename=\"xyz.abc\"");

habe ich direkt hinter

Code:
response.setContentType(rsf.getString("contentType"));

gesetzt.

Ich habe es mit Firefox und dem Konqueror versucht. Beider schlagen noch das jsp, welches aufgerufen wird zum senden der Datei, als Namen vor.

Hoffe es kann mir jemand sagen woran das liegt.

tia

Oli
 
G

Guest

Gast
Semikolon statt Doppelpunkt hinter inline bzw. attachment, dann sollte es gehen.
 

nauni77

Mitglied
Hi,
habe es auch mit ";" versucht. Leider ohne Erfolg. Zudem habe ich aus Verzweiflung folgende Header hinzugefügt:

Code:
request.setHeader("Pragma", "no-cache");
request.setHeader("Expires", "0");
request.setHeader("Content-Disposition", "attachment; filename=\"abc.xyz\"");

Eigentlich verhindern diese nur ein hinterlegen der Datei im Cache.

Woran könnte es noch liegen? Ich habe keine Ideen mehr. :bahnhof:

tia

Oli
 
G

Guest

Gast
Browsercache leeren vielleicht. IE ist ein Messie. ;)
Wenn es immer noch nicht geht, dann weiss ich nichts mehr.
 

nauni77

Mitglied
Hi,
leider liegt es nicht daran. Danke trotzdem für den Tipp! Ab und zu liegt es wirklich an solchen Kleinigkeiten die in diesem Moment einfach nicht beachtet werden.

Hoffe es hat noch jemand einen Tipp für mich.

tia

Oli
 

clemson

Bekanntes Mitglied
ich hab das so gelöst

Code:
int MAX_AGE_IN_SECONDS = 600; // maximale wartezeit in sekunden
...
response.setContentLength(file.length());
response.setContentType("application/x-file-download");
response.setHeader("Content-disposition", "attachment; filename=abc.exe");
response.setHeader("Cache-Control", "max-age="+ MAX_AGE_IN_SECONDS);
...
// stream der datei auf den outputstream des response schreiben...


und da hab ich noch eine beispiel applikation (allerdings in struts), welche streams aus einer datenbank zum download bereit stellt --> strutsblobapp
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Tomcat Application Path bestimmen Allgemeines EE 0
TheWhiteShadow JSF plugins für tomcat webapp Allgemeines EE 0
X Tomcat checkParachute Allgemeines EE 3
C Servlet Tomcat/Jersey findet REST-Service nicht Allgemeines EE 3
J Global JNDI Tomcat Allgemeines EE 0
N WebService WAR-File auf Tomcat-Server Allgemeines EE 1
C WebSocket in Tomcat wirft 404 Allgemeines EE 0
S Eclipse mit Tomcat und Jersey Allgemeines EE 7
S Fehlersuche in Eclipse/Tomcat -> Error-log?? Allgemeines EE 2
S Tomcat und 404 -> von jetzt auf gleich Allgemeines EE 4
L JNDI auf Tomcat mit EE Allgemeines EE 4
E Servlet Tomcat Method Signature Resolution Allgemeines EE 7
J Logging und Monitoring unter Tomcat Allgemeines EE 2
aze Tomcat:Error Pages werden nicht angezeigt Allgemeines EE 4
D JSF JSF 2.0 + ICEFaces + Tomcat 7 Allgemeines EE 3
R Sessionmanagement und Tomcat Allgemeines EE 6
W Tomcat Support mit SLA? Allgemeines EE 3
P Tomcat lädt falsche Datei obwohl richtig angegeben Allgemeines EE 11
N Tomcat funktioniert nach shutdown/startup nicht mehr korrekt Allgemeines EE 9
B Tomcat, JNDI und datasource - Konfiguartion Allgemeines EE 2
JimPanse Tomcat Fehler nach redeploy Allgemeines EE 5
A Java Tomcat findet Website nicht Allgemeines EE 8
S Anfängerfrage Eclipse/Tomcat Allgemeines EE 4
H Installer für Tomcat-Anwendung Allgemeines EE 5
A Tomcat in Eclipse Allgemeines EE 11
T Tomcat: Sessions bleiben zu lange erhalten Allgemeines EE 13
C Tomcat Zugriff auf lokale Dateien Allgemeines EE 2
A Tomcat, Exceptions beim redeploy Allgemeines EE 4
P Hilfe: Tomcat periodischer Absturz Allgemeines EE 5
MQue Tomcat reload Allgemeines EE 4
neurox Tomcat stoppen Allgemeines EE 1
S Unterschied zwischen Tomcat und Application Server? Allgemeines EE 3
MQue Tomcat PermGen Allgemeines EE 7
MQue Tomcat Methodenaufruf Allgemeines EE 3
P Eclipse Tomcat Plugin funktioniert nicht mit externem TC-Server? Allgemeines EE 4
MQue TCP- Verbindung nach Tomcat- Start (global) starten Allgemeines EE 4
reibi Tomcat Proxy eintragen Allgemeines EE 2
P CXF Project auf Tomcat laufen lassen - wie? Allgemeines EE 35
R (TOMCAT] Installation Tomcat auf WinXP Allgemeines EE 8
S Tomcat + Eclipse Allgemeines EE 6
T Security Manager in Tomcat Allgemeines EE 2
S Unterschiedliche Pfade bei Tomcat Allgemeines EE 4
ps EJB3 in Tomcat. das hat selbst mich erstaunt Allgemeines EE 18
B Tomcat Manager - .war Datei hochladen. Einfache Frage Allgemeines EE 5
G Probleme im Tomcat - loading WebappClassLoader Allgemeines EE 3
O ApplicationServer vs. Tomcat Allgemeines EE 5
G Verbindung zu Tomcat Allgemeines EE 15
B Tomcat -> Funktions User Credentials hinterlegen Allgemeines EE 7
B fmt:setBundle => Wo liegt die Properties-Datei im Tomcat? Allgemeines EE 3
U Tomcat Compilierproblem Allgemeines EE 2
A Tomcat -- JSP: komisches Problem Allgemeines EE 11
W Speicher-Problem bei WebApp unter Tomcat, Struts, Hibernate Allgemeines EE 3
M Gelegentlicher Absturz Tomcat Anwendung: PermGen Space Allgemeines EE 6
R Error ServletContextListener auf Tomcat 6 Allgemeines EE 2
Y myFaces 1.2 und Tomcat 5.x / 6.0 Allgemeines EE 9
S tomcat session timeout - und was danach? Allgemeines EE 1
A Tomcat startet nicht, Einstellungsfehler? Allgemeines EE 3
S Auf Datei ausserhalb des Tomcat zugreifen Allgemeines EE 4
S JSP / Tomcat / Eclipse / Unable to compile class for JSP Allgemeines EE 4
E JBoss mit existierendem Tomcat nutzen? Allgemeines EE 4
M JSP: Tomcat: Serverfehler 500 nur beim IE. Allgemeines EE 2
G JSF 1.2 unter Netbeans 6 mit Tomcat 6.0 ->Navigationsprob Allgemeines EE 6
O eclipse - tomcat: Problem bei einfachem Webservice Allgemeines EE 16
L Tomcat Service mit JPDA debugging starten Allgemeines EE 2
J Tomcat: "Unable to get connection, DataSource invalid&q Allgemeines EE 8
A web.xml für Servlet in Tomcat 5.5 erstellen Allgemeines EE 2
F Tomcat: zentraler Class-Ordner? Allgemeines EE 2
A web.xml für Servlet in Tomcat erstellen Allgemeines EE 6
T Tomcat: JNDI + JDBC Problem Allgemeines EE 3
N Zugriff auf Webapp nur für localhost definieren (Tomcat) Allgemeines EE 2
byte Tomcat Deployment Problem (HTTP Status 503) Allgemeines EE 8
H Tomcat, MySQL Allgemeines EE 4
B tomcat verbergen Allgemeines EE 3
M classNotFoundexception vom tomcat Allgemeines EE 10
B Liferay + Tomcat Allgemeines EE 4
K tomcat: session-unabhängiges speichern Allgemeines EE 3
G Tomcat übersetzt nichts mehr Allgemeines EE 6
M tomcat beim booten mit starten Allgemeines EE 4
F Serverdienst in Tomcat implementieren Allgemeines EE 14
J Tomcat mit eigener Session-Implementierung Allgemeines EE 15
V tomcat 6 webserver oder was ist sein Sinn? Allgemeines EE 3
G eigener Tomcat-Connector f. propiet. Protokoll via TCP/IP Allgemeines EE 2
J wsdl-tomcat-AXIS Allgemeines EE 2
G Tomcat unter Eclipse starten Allgemeines EE 9
F Tomcat mit 128 MB Ram Allgemeines EE 9
C Unable to query Tomcat Manager: couldn't connect to host Allgemeines EE 2
A Cronjob mit Tomcat starten ? Allgemeines EE 4
B Connection Poll ohne TomCat Allgemeines EE 5
N Tomcat GWT-Anwendung - An beliebiger Stelle schreiben Allgemeines EE 2
E Tomcat Einstellungen Allgemeines EE 10
B Servlet-Api.jar auf JBoss? (Migration von Tomcat zu JBoss) Allgemeines EE 4
H Eine kurze Verständnisfrage zum Tomcat Allgemeines EE 2
S Hibernate, Tomcat und Eclipse treiben mich zum Wahnsinn. Allgemeines EE 2
F webanwendung läuft nicht auf Tomcat Allgemeines EE 2
M Tomcat, Hibernate, MySQL und die EOFException Allgemeines EE 7
Y Tomcat Thread-Handling Allgemeines EE 2
K Tomcat als Client nutzen Allgemeines EE 2
L Tomcat auf Windows Server 2003 Allgemeines EE 10
T Sysdeo Eclipse Tomcat Plug-in Allgemeines EE 4
H Tomcat in jbuilder mit startup.bat starten Allgemeines EE 5

Ähnliche Java Themen

Neue Themen


Oben