Mailinglist Archive: opensuse-programming-de (18 mails)
| < Previous | Next > |
Tomcat: Binary aus DB lesen und an Browser/Client senden
- From: Tim Oliver Wagner <lists@xxxxxxxxxxxxx>
- Date: Tue, 23 May 2006 18:21:36 +0200
- Message-id: <200605231821.36821.lists@xxxxxxxxxxxxx>
Hallo,
bei mir läuft ein Tomcat 5.X und J2EE 1.5_6.
Mit org.apache.commons.io habe ich es geschafft Dateien hochzuladen und diese
in eine Datenbank zu speichern. Nun habe ich das Problem, dass ich diese
Dateien von wieder von Clients runterladen lassen möchte - PDF, DOC,JPG, ...
es gibt alle möglichen Dateitypen, welche ich zu den Clients senden möchte.
Aus der DB habe ich den Longblob ausgelesen und davon einen InputStream
erzeugt.
[code]
java.sql.ResultSet rsf = myOne.getFile(request.getParameter("fid"));
while (rsf.next()) {
java.io.InputStream is = rsf.getBinaryStream("file");
File f = new File("/home/tow/" + rsf.getString("fname"));
FileInputStream fis = new FileInputStream(f);
}
[/code]
Wie kann ich nun den "is"/BinaryBlob an den Client senden? Mit
response.getOutputStream() bekomme ich einen OutputStream auf den ich
schreiben kann.
Wenn möglich möchte ich angeben können um welchen Datei-Typ es sich handelt,
damit auf dem Client das entsprechende Programm geöffnet werden kann. Das
müsste doch mit setContentType(String type) gemacht werden können??
Daraus resultier mein Lösungsansatz (funktioniert leider nicht) ... mit
setContentType den ContentType setzen. Dann den OutputStream holen und Byte
für Byte vom InputStream lesen und in den OutputStream schreiben. Wie geht
das? Da mache ich wohl irgendetwas falsch ... falls es so funktioniert.
Ich bin für jeden Tipp dankbar! :-)
tia und schöne Grüße
Oli
bei mir läuft ein Tomcat 5.X und J2EE 1.5_6.
Mit org.apache.commons.io habe ich es geschafft Dateien hochzuladen und diese
in eine Datenbank zu speichern. Nun habe ich das Problem, dass ich diese
Dateien von wieder von Clients runterladen lassen möchte - PDF, DOC,JPG, ...
es gibt alle möglichen Dateitypen, welche ich zu den Clients senden möchte.
Aus der DB habe ich den Longblob ausgelesen und davon einen InputStream
erzeugt.
[code]
java.sql.ResultSet rsf = myOne.getFile(request.getParameter("fid"));
while (rsf.next()) {
java.io.InputStream is = rsf.getBinaryStream("file");
File f = new File("/home/tow/" + rsf.getString("fname"));
FileInputStream fis = new FileInputStream(f);
}
[/code]
Wie kann ich nun den "is"/BinaryBlob an den Client senden? Mit
response.getOutputStream() bekomme ich einen OutputStream auf den ich
schreiben kann.
Wenn möglich möchte ich angeben können um welchen Datei-Typ es sich handelt,
damit auf dem Client das entsprechende Programm geöffnet werden kann. Das
müsste doch mit setContentType(String type) gemacht werden können??
Daraus resultier mein Lösungsansatz (funktioniert leider nicht) ... mit
setContentType den ContentType setzen. Dann den OutputStream holen und Byte
für Byte vom InputStream lesen und in den OutputStream schreiben. Wie geht
das? Da mache ich wohl irgendetwas falsch ... falls es so funktioniert.
Ich bin für jeden Tipp dankbar! :-)
tia und schöne Grüße
Oli
| < Previous | Next > |