Imagem .png no banco de dados visualizar na aplicacao WEB

Ola galera, eu tenho um JSP que ele le uma imagem do banco de dados e a grava em disco para ai sim eu fazer um , gostaria de saber como eu poderia visualizar a imagem sem ter que grava-la em disco grato.


	
		FileInputStream in = new FileInputStream("/home/rodrigo/imagem.jpg");
                ServletOutputStream  op = getServletResponse().getOutputStream();
			int next;
			
			while ((next = getInputStream().read()) != -1){
				op.write(next);
			}
		op.flush();
		op.close();
	}
}

Talvez assim vai, testa ai.

opa Rodrigo obrigado pela resposta, bom mais acho que nao fui claro… :frowning:

eu nao quero ler a imagem do disco… no caso isso ja estou fazendo, eu nao quero pois… eu retiro do banco de dados a imagem e coloco ela no meu .WAR

SELECT lo_export(imagem,'/caminhoServidor/.War/img.png') FROM alive_portal WHERE codigo = '1'

eu nao quero usar lo_export gostaria de deixar a imagem em memoria e apartir do codigo aparecer a imagem no JSP

[code]ResultSet rs = …; //O resultado da sua consulta ao banco

	Blob b = rs.getBlob(1); //Recupera o conteúdo da imagem, em bytes
	
	byte[] img = b.getBytes(0, b.length()); //Transforma o BLOB num array de bytes
	
	resp.setContentType("image/png"); //Não tenho certeza se o content type é esse mesmo
	
	resp.getOutputStream().write(b); //Escreve os bytes na stream de resposta
	
	resp.getOutputStream().flush();

[/code]

Acho que é isso…

[]´s

asaudate obrigado cara, estou indo para faculdade agora, quando volta no trabalho eu testo vlw

Bom por enquanto estou montando tudo no JSP, mas nao esta dando certo, pelos teste que fiz o erro esta aqui

Blob b = rs.getBlob(1); //Recupera o conteúdo da imagem, em bytes

pois o erro comeca ai,

[code]<%@page language=“java” import=“org.apache.commons.fileupload., java.util., java.io." %>
<%@ page import="java.sql.
” %>
<%@ page import=“org.postgresql.Driver” %>
<%
String url = “jdbc:postgresql://xxx.xxx.x.xxx:5432/alive”;
String username = “xxxxxx”;
String password = “xxxxxxxx”;
String r = “”;
String SQL = “select imagem from alive_portal where codigo = ‘0’”;
try {
Class.forName(“org.postgresql.Driver”);
} catch (ClassNotFoundException cnfe) {
cnfe.printStackTrace();
}
Connection con = null;
try {
con = DriverManager.getConnection(url, username, password);
} catch (SQLException se) {
se.printStackTrace();
}
Statement stm = null;
stm = con.createStatement();
ResultSet rs = stm.executeQuery(SQL);

Blob b = rs.getBlob(1); //Recupera o conteúdo da imagem, em bytes

byte[] img = b.getBytes(0, (int)b.length());
try   
{  
	con.close();  
}  
catch(SQLException onConClose)  
{    
	onConClose.printStackTrace();  
}  

%>
[/code]

A estrutura que eu te passei é pra ser usada num servlet (pois você precisa setar o tipo de conteúdo). No src da imagem , portanto, você deve colocar o caminho do servlet. Além do mais, o campo “imagem” é do tipo BLOB? (Assumí que fosse).

Note que na linha

<img src="<%= b %>">  

você está colocando como se o source fosse o blob, diretamente extraído do banco (o que, obviamente, não vai funcionar, já que marcação em HTML ainda não dá suporte a JDBC :slight_smile: )

Tente criar um servlet com o código que te passei (e verifique se o campo é do tipo BLOB) e depois avise se não funcionar, OK ?

[]´s

eu usei assim

[code]create domain lo as oid; *

CREATE TABLE imagem
(

      codigo varchar(30) NOT NULL,
      imagem lo,
      PRIMARY KEY (nome)

) [/code]

eh que estou iniciando banco de dados e portlets… nao tenho muito conhecimento, ao sei se criando o campo assim eh um campo blob