Zum Inhalt springen

BLOB aus Datenbank auslesen


Alive3000

Empfohlene Beiträge

Ich mal wieder:-) ich hab ein Problem ein Bild auszulesen das in der datenbank als blob gespeichert ist. ich rufe die folgende funktion per servlet auf.

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException

	{

		writeImage(request, response);

	}


	public void writeImage(HttpServletRequest request, HttpServletResponse response) throws IOException 

	{

		String firmenId = request.getParameter("firmenId");


		if(firmenId != null && !firmenId.equals(""))

		{

			response.setContentType("image/GIF");

			request.getSession(true);


			DBConnection db = new DBConnection();


			try

			{

				db.openConnection();

				String sql = "SELECT logo FROM `Tabellenname` WHERE id = " + firmenId + ";";

				ResultSet rs = db.executeSelect(sql);

				Blob bl = null;

				while(rs.next())

				{

					bl = rs.getBlob("logo");

				}


				if(bl != null)

				{

					InputStream input = bl.getBinaryStream();


					BufferedImage image = ImageIO.read(input);


					byte[] data = ((DataBufferByte) image.getData().getDataBuffer()).getData();


					if (data != null)

					{

						response.getOutputStream().write(data);

					}




				}

			}

			catch (Exception e)

			{

				e.printStackTrace();

			}

			finally

			{

				db.closeConnection();

			}

		}

Link zu diesem Kommentar
Auf anderen Seiten teilen

das ist ja eine sehr hilfreiche antwort:upps weiss nicht was so ne antwort hier zu suchen hat

siehe hierzu: Wie man Fragen richtig stellt: eine Anleitung wie man Fragen erfolgreich in Usenet, Mailing Listen und Webforen stellt.

Du hast Dir noch nicht einmal die Mühe gemacht Dein Problem zu beschreiben !! "Ich habe ein Problem" ist keine (!) aussagekräftige Fehlermeldung

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Servus,

also Deine Frage war wirklich keine. Du hast ein Problem und Du hast Code geliefert. Deshalb waren die Hinweise absolut gerechtfertigt und Du hättest daraufhin freundlicher nachfragen können.

Aber jetzt noch zum Problem: bist Du sicher, dass Bytes rauskommen bei Deiner Abfrage? Warum baust Du das in ein BufferedImage? Du willst doch nur die Bytes, also lies die doch direkt aus dem Stream.

Dann solltest Du noch neben der Angabe des ContentTypes die ContentLength setzen: response.setContentLength(data.length);

Und Du solltest den Stream flushen: output.flush();

Wenn dann wirklich Daten da sind und die auch noch den korrekten ContentType haben, dann funktioniert das.

Peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Was mir noch dazu einfällt:

"Wie" sind die Bilder in die DB gekommen. Wenn z.B. da aus Windows via OLE z.B. Access importiert wurde, liegt das Blob als OLE vor und nicht direkt als Gif.

Falls ich Bilder als Blob speichere (wovon man abrät) können sie z.B. auch Base64 codiert sein Mein Tipp: Lass Dir mal die Blob Daten in eine Datei schreiben und öffne diese mit einem Graphikprogramm. Wenn es nicht geht, dann liegt kein Gif vor.

Gern gemachter Fehler: Innerhalb der DB Bilder zu speichern (JPEG, GIF, PNG), aber nicht den Content-Typ und dann z.B. versuchen einfach die Blobs als JPEGs zu interpretieren, das geht so lange gut, so lange ein JPEG vorliegt.

Ebenso kann man bei manchen DBMS die max. Blobgröße bestimmen, evtl dort auch einmal prüfen, ob die Daten korrekt vorliegen

HTH Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...