BLOB ausgeben

Status
Nicht offen für weitere Antworten.
F

FlorianK

Gast
Hallo,

ich versuche einen BLOB aus meiner Datenbank auszugeben.

Ich habe in meiner Datenbank eine Binär-Datei + den Dateinamen.

Auf einer JSP Seite habe ich einen Formular Button, mit dem man die Datei runterladen soll.
Das Formular verweist auf mein Servlet.

Im Servlet wird der BLOB wieder zu einer Datei und über RESPONSE zurückgegeben.

Grob funktioniert es auch, jedoch ist die "neue" Datei (die, die ich vom Servlet bekomme) kleiner als die orginal Datei.
Bzw, bei *.doc Dateien bekomme ich nur noch kryptische Zeichen angezeigt.

An was kann das liegen ?

Code:
[SELECT-STATEMENT]

response.setHeader("Content-Type","application/octet-stream");
response.setHeader("Content-Disposition","filename="+ filename);

while(rs.next()) {
  InputStream input = rs.getBinaryStream("file");
  ByteArrayOutputStream output = new ByteArrayOutputStream();

  byte[] rb = new byte[8091];
  int ch = 0;
  try {
    while ((ch = input.read(rb)) != -1) {
      output.write(rb, 0, ch);
    }
    input.close();
    output.close();
  } catch (IOException ioe) {
      System.out.println("IO ERROR : "+ e);
  }

}

Java: SDK 1.4.2
DB: HSQLDB
Tool: Eclipse 3.1.2
 

foobar

Top Contributor
Warum speicherst du nicht einfach den Dateinamen in dem Feld, dann wird die DB nicht do aufgeblasen.
 
F

FlorianK

Gast
Den Dateinamen ansich speicher ich auch in einem varchat Feld in der Datenbank, aber das hat ja ansich nichts mit dem Problem zu tun :/
 

AlArenal

Top Contributor
Was foobar meint ist, warum du nicht die Datei "wie sie ist" auf dem Server ablegst und in der DB lediglich den Dateinamen ablegst, der auf die Datei zeigt...
 

foobar

Top Contributor
Was foobar meint ist, warum du nicht die Datei "wie sie ist" auf dem Server ablegst und in der DB lediglich den Dateinamen ablegst, der auf die Datei zeigt...
Genau das habe ich gemeint. Sorry wenn ich mich etwas undeutlich ausgedrückt habe.

Das ist auf jeden Fall viel einfacher zu warten, als wenn du die Daten einmal auf Platte und einmal in der DB hälst.
 
F

FlorianK

Gast
Ja, dass habe ich ja auch versucht.

Jedoch läuft das ganze auf einem Ubuntu (Linux) Server und wenn ich was in meinem Projekt änder, wird erst das ganze Projekt vom Server gelöscht und neu aufgespielt. Und somit sind meine ganzen hochgeladenen Dateien weg.

Deswegen speicher ich sie in der Datenbank. Dort gehen Sie nicht verloren.

ich persönlich bin kein guter Freund von BLOB's aber nun muss ich in den sauren Apfel beißen :/
 

AlArenal

Top Contributor
Ich verstehe jetzt nicht wirklich, was es da mit dem Löschen auf sich hat. Vielleicht solltest du lieber da ansetzen, als so nen kruden Workaround zu basteln.
 

foobar

Top Contributor
Jedoch läuft das ganze auf einem Ubuntu (Linux) Server und wenn ich was in meinem Projekt änder, wird erst das ganze Projekt vom Server gelöscht und neu aufgespielt. Und somit sind meine ganzen hochgeladenen Dateien weg.
Das mußt du mir mal etwas genauer erklären. Du meinst, wenn du die Applikation deployst wird der gesamte Ordner im Tomcat gelöscht?
Warum legst du die Dateien dann nicht woanders hin?
 
F

FlorianK

Gast
Wohin soll ich Sie denn legen, wo sich nicht gelöscht werden?
 
F

FlorianK

Gast
Das ganze Projekt wird gelöscht...
Und ich komm ja nicht von einem Projekt ins andere Projekt...

Also kann ich es nicht ins Filesystem machen...
 
F

FlorianK

Gast
Ich arbeitet mit JBoss.
Das ist ein Applikationsserver...

Wenn ich mein Projekt deploy (aktualisier) dann löscht er mein aktuelles Projekt vom Server und spielt das neuere Projekt auf.

Wenn ich die Dateien also im Filesystem speicher, dann speichert er sie auf dem Server im Projekt.
Diese werden dann beim nächsten deploy gelöscht...
 

foobar

Top Contributor
Wenn ich mein Projekt deploy (aktualisier) dann löscht er mein aktuelles Projekt vom Server und spielt das neuere Projekt auf.
Das ist ja auch in Ordnung, aber du mußt die Anwendungdaten doch nicht im Projektverzeichnis speichern. Leg dir einfach einen Ordner an in dem du die Files speicherst.
 
F

FlorianK

Gast
Aber ich komm dann nicht an den neuen Ordner dran...
Der neue Ordner muss ja in meinem Projekt liegen, dass ich dran komm, aber dann wird er beim nächsten deploy gelöscht...
 

foobar

Top Contributor
Aber ich komm dann nicht an den neuen Ordner dran...
Wer sagt denn sowas?

Code:
File f = new File("/opt/foo/bar");
Du brauchst eben nur die entsprechenden Rechte auf dem Verzeichnis.
 

foobar

Top Contributor
Jetzt verstehe ich was du meinst. Das brauchst du auch nicht, denn du kannst den Request doch auseinander pflücken. Mal angenommen der Request sieht so aus:
http://mydomain.org/myApp/index.jsp?action=readFile&id=1

Dann weißt du doch das der User eine Datei lesen will mit der Id 1. Über die Id holst du dir aus der DB den Filenamen und liest dann über das Dateisystem die Datei ein und gibst sie zurück. Das ist alles.
 
F

FlorianK

Gast
Das hatte ich schon alles zig mal probiert.
Es funktionierte nicht...

Nun hab ich mich für BLOB entschieden...

Kannst du mir bei meinem Problem helfen?

Ich möchte jetzt nicht noch andere Varianten probieren, sondern einfach meine BLOB Variante zuende bringen...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I BLOB / CLOB und Hibernate... Ratschläge benötigt Java Basics - Anfänger-Themen 10
Naxon89 Input/Output Ein PDF in einem BLOB umwandeln um ihn dann als PDF wieder anzuzeigen Java Basics - Anfänger-Themen 3
B Input/Output InputStream (JSch) in OutputStream (Blob) überführen Java Basics - Anfänger-Themen 8
A POI Einlesen Excel Workbook aus BLOB oder von URL anstatt aus Filesystem ? Java Basics - Anfänger-Themen 3
G JPEG aus Blob als ImageIcon anzeigen Java Basics - Anfänger-Themen 5
G Gezipten Blob auslesen Java Basics - Anfänger-Themen 6
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
ixChronos Letzten 4 Ziffern einer großen Zahl ausgeben Java Basics - Anfänger-Themen 3
Glühlampe Usereingabe in der gleichen Zeile ausgeben Java Basics - Anfänger-Themen 6
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
H Minimum und Maximum ausgeben lassen Java Basics - Anfänger-Themen 7
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
javaBoon86 Arrays 2 Dimension Werte ausgeben Java Basics - Anfänger-Themen 15
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
S Vollmond berechnen und ausgeben Java Basics - Anfänger-Themen 12
S Vollkommene Zahl berechnen und ausgeben Java Basics - Anfänger-Themen 16
K wie kann ich alle Attribute von dem Objekt(pagode) ausgeben lassen ? Java Basics - Anfänger-Themen 3
I Wortkette in umgekehrter Rheinfolge + in neuer Zeile ausgeben Java Basics - Anfänger-Themen 4
jeff98 Wie kann man in Java eine Zeichenformation ausgeben? Java Basics - Anfänger-Themen 9
S Größte Zahl nach Eingabe der Zahl 0 ausgeben Java Basics - Anfänger-Themen 6
Tommilee Char ausgeben Java Basics - Anfänger-Themen 5
K Geldbetrag in Euro + Cents ausgeben Java Basics - Anfänger-Themen 24
M geschachtelte for-Schleifen - Einmaleins ausgeben Java Basics - Anfänger-Themen 3
TheSepp Nur Arrays ausgeben, die Werte zugewiesen haben. Java Basics - Anfänger-Themen 4
julian0507 Wörter einlesen lassen und rückwärts ausgeben Java Basics - Anfänger-Themen 7
I ResultSet aus meiner SQL-Abfrage in einem JTextfield ausgeben. Java Basics - Anfänger-Themen 1
M Werte in Felder speichern und geordnet ausgeben Java Basics - Anfänger-Themen 8
JavaBeginner22 Wort mit der größten Länge ausgeben Java Basics - Anfänger-Themen 4
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
LilliCherry Array in einer Zeile ausgeben Java Basics - Anfänger-Themen 6
D Grafik auf ein JPane ausgeben. Java Basics - Anfänger-Themen 6
berserkerdq2 Methodenaufrufstapel ausgeben, was ist das? Java Basics - Anfänger-Themen 2
rosima26 Geordnete Arrays ausgeben Java Basics - Anfänger-Themen 31
D Inhalt eines Arrays ausgeben Java Basics - Anfänger-Themen 7
C Zwei Arrays addieren und ausgeben Java Basics - Anfänger-Themen 3
LFB In einer For-Schleife alles in einer Zeile ausgeben Java Basics - Anfänger-Themen 14
Robin Gentele XML von Webserver lesen und ausgeben Java Basics - Anfänger-Themen 5
W Array ausgeben Java Basics - Anfänger-Themen 29
I 2D-Array Position der Liste ausgeben. Java Basics - Anfänger-Themen 2
S Schachbrettmuster ausgeben Java Basics - Anfänger-Themen 3
J Zahlen bis zu einem bestimmten Grenzwert ausgeben Java Basics - Anfänger-Themen 11
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
M Array rückwärts ausgeben Java Basics - Anfänger-Themen 2
HelpInneed Baum ausgeben (aber mal anders) Java Basics - Anfänger-Themen 3
HeiTim Brauche Hilfe soll ein nummeriertes Feld ausgeben lassen Java Basics - Anfänger-Themen 17
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
xFlozen Text mehrspaltig ausgeben Java Basics - Anfänger-Themen 3
Kotelettklopfer Stringbuilder mit print ausgeben Java Basics - Anfänger-Themen 83
L Methoden Rückgabewert Verbergen / nicht mit ausgeben Java Basics - Anfänger-Themen 4
S Array über ein Ausgabemethode in main ausgeben Java Basics - Anfänger-Themen 31
S Primzahlen in Array ausgeben Java Basics - Anfänger-Themen 14
O Anzahl Datensätze ausgeben Java Basics - Anfänger-Themen 5
W n verschiedene Arrays zufällig ausgeben - mit der Random-Klasse? Java Basics - Anfänger-Themen 8
C Matrix mit Array ausgeben Java Basics - Anfänger-Themen 6
Poppigescorn Mithilfe einer Arrayliste einen Notenspiegel ausgeben Java Basics - Anfänger-Themen 12
C Methode Grouping mit Werten ausgeben Java Basics - Anfänger-Themen 2
A Array einlesen und ausgeben Java Basics - Anfänger-Themen 13
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
ansystin Teilerfremde Zahlen ausgeben + Zahlenausgabe speichern Java Basics - Anfänger-Themen 3
J Koordinaten per Schleife ausgeben Java Basics - Anfänger-Themen 6
S Wort einlesen Array ausgeben Java Basics - Anfänger-Themen 4
H Eingegebene Zahlen mit Array ausgeben Java Basics - Anfänger-Themen 18
S Arraylist<Object> mit verschiedenen Objects ausgeben Java Basics - Anfänger-Themen 3
L Längstes Element einer ArrayList ausgeben Java Basics - Anfänger-Themen 9
I 12 Spalten von jeweils 30 Zahlen in Konsole ausgeben Java Basics - Anfänger-Themen 6
elsaaaaaa Wochentag als String ausgeben mit JDK Klassen Java Basics - Anfänger-Themen 6
M ArrayList in GUI ausgeben Java Basics - Anfänger-Themen 1
C Erste Schritte Muster ausgeben in der Konsole - großes V Java Basics - Anfänger-Themen 5
J Nur bestimmter Typ aus der ArrayList ausgeben. Java Basics - Anfänger-Themen 9
I Java-Wort einlesen und ausgeben Java Basics - Anfänger-Themen 7
KogoroMori21 Methode in der main ausgeben Java Basics - Anfänger-Themen 2
M Wie kann ich hier den Abstand ausgeben? Java Basics - Anfänger-Themen 3
W Anzahl der Zeilen ausgeben lassen Java Basics - Anfänger-Themen 20
U Teilergebniss mit 0 nicht ausgeben Java Basics - Anfänger-Themen 3
S Tastatureingabe auslesen und in Konsole ausgeben Java Basics - Anfänger-Themen 6
T Bestimmte Zahlen ausgeben mit einer whilfe Schleife Java Basics - Anfänger-Themen 21
M In gleicher zeile hinter ausgabe noch etwas ausgeben Java Basics - Anfänger-Themen 1
JD_1998 Array-Position aus einer Methode in einer anderen ausgeben (Kurze Frage) Java Basics - Anfänger-Themen 2
M Objekte in Array speichern und ausgeben Java Basics - Anfänger-Themen 17
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
H Alle Geraden zahlen bis 10 ausgeben Java Basics - Anfänger-Themen 11
M Strings mit gerader und ungerader Länge ausgeben Java Basics - Anfänger-Themen 10
R Löschen und ausgeben eines Teilbaums Java Basics - Anfänger-Themen 3
N enum Attribut von Objekten einer Hashmap ausgeben Java Basics - Anfänger-Themen 6
A Doppelt verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 17
C das Doppelte des Wertes in der Console ausgeben Java Basics - Anfänger-Themen 10
J Tic Tac Toe ausgeben Java Basics - Anfänger-Themen 4
A Input/Output Dateien einlesen und ausgeben Java Basics - Anfänger-Themen 7
K Array alle Werte aufsummieren und ausgeben Java Basics - Anfänger-Themen 6
H Ungerade Zahlen ausgeben von 1 bis 1000 Java Basics - Anfänger-Themen 8
N Tabelle schön in der Konsole ausgeben Java Basics - Anfänger-Themen 5
P Ziffer in der Mitte ausgeben Java Basics - Anfänger-Themen 12
S Erste Schritte Button einen Wert zuweisen & diesen ausgeben Java Basics - Anfänger-Themen 2
B Nur eine bestimmte Anzahl an Arrays ausgeben Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben