2016-05-13 21 views
3

In Java-JSP verwende ich Eingabestream und BLOB-Datentyp, um jede Art von Datei in die Datenbank zu schreiben. Ich möchte die BLOB-Datei abrufen. Wie soll ich das abrufen? Ich habe versucht, Select-Anweisung zu verwenden und bekam diese (Material-Spalte). enter image description hereSo rufen Sie die Originaldatei ab

+1

können Sie einen Code zeigen, wie Sie in die Datenbank einfügen? –

+1

[link] (http://stackoverflow.com/questions/37203046/retrieving-file-upload-from-database) überprüfen Sie den Code –

Antwort

2

einem ResultSet verwenden, können Sie eine java.sql.Blob Instanz abrufen:

Blob blob = resultSet.getBlob("MATERIAL"); 

Dann können Sie einen Eingabestrom öffnen:

InputStream input = blob.getBinaryStream(); 

Und in eine Datei schreiben, wie in Is it possible to create a File object from InputStream beschrieben

+1

, wie dieser Eingabestrom in Jsp, nach dem Abrufen des Werts von Blobmaterial? –

+0

musst du es zeigen oder herunterladen können? Was möchten Sie tun, wenn die Datei nicht angezeigt werden kann? – andrucz

+0

Ich löste dies ohne Blob zu verwenden, für Downloads igave den Dateipfad und es funktioniert –

0

Den Blob aus der Tabelle holen:

try (ResultSet rs = statement.executeQuery(query)) { 
    if(rs.next()) { 
     fileBlob = rs.getBlob(1); 
    } 
} 

Speichern der Inhalte der Blob in eine neue Datei:

try (InputStream ipStream = fileBlob.getBinaryStream(1, fileBlob.length()); 
     OutputStream opStream = new FileOutputStream(new File("path/to/file"))) {       
    int c; 
    while ((c = ipStream.read()) > -1) { 
     opStream.write(c); 
    } 
} 
+0

wie diesen Eingangsstrom in Jsp zu zeigen? –

Verwandte Themen