galera no meu bd (sql server) tem um campo que é uma foto (objeto ole),como eu faço para poder visualizar a imagen no jsp, ou seja fazer um select e mostrar a foto da pessoa ???
Daí,
Podes fazer um servlet que recebe o conteúdo do banco e transforma numa figura usanod InputStream e umas classes da com.sun.imageio pra transformar no tipo que tu quiseres. Daí depois é só a página JSP ler chamar o servlet na hora que for montar o link da imagem.
Por exemplo:
<img src="/servlet/ImageReagerServlet?imageId=43" />
E o servlet pega o id que a JSP passou e recupera a imagem do banco e exibe.
[code] public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
// Get the absolute path of the image
ServletContext sc = getServletContext();
String filename = sc.getRealPath("image.gif");
// Get the MIME type of the image
String mimeType = sc.getMimeType(filename);
if (mimeType == null) {
sc.log("Could not get MIME type of "+filename);
resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return;
}
// Set content type
resp.setContentType(mimeType);
// Set content size
File file = new File(filename);
resp.setContentLength((int)file.length());
// Open the file and output streams
FileInputStream in = new FileInputStream(file);
OutputStream out = resp.getOutputStream();
// Copy the contents of the file to the output stream
byte[] buf = new byte[1024];
int count = 0;
while ((count = in.read(buf)) >= 0) {
out.write(buf, 0, count);
}
in.close();
out.close();
}[/code]
Achei esse código na net, mas é parecido com um que eu já fiz, então funciona, só que não to conseguindo achar a minha classe pra poder mostrar pra ti.
Basicamente o que tens que fazer é trocar a aprte que lê o arquivo do sistema e passar a ler do BD.
Agora, curiosidade, por que tu não armazenas só o endereço da imagem no banco e deixa a imagem no servidor mesmo ? Isso ia te agilizar muita coisa, sem falar que seria bem mais fácil.
[]s
eu ate faria isso, mas o bd nao é meu e ja tem mais de 10000 fotos no bd,porem a recuperação de uma unica foto fica bem mais leve,
valew,vou tentar implementar
tipo,to mais perdido q cego em tiroteio,a foto no bd ta nesse formato
0xFFD8FFE000104A46494600010100000100010000FFDB004300100B0C0E0C0A100E0D0E1211101318281A181616183123251D283A333D3C3933383740485C4E404457453738506D51575F626768673E4D71797064785C656763FFDB00431518AFF1A1A2F6342384263636363636363636363636363636363636363
por exemplo,eu queria fazer uma função para retornar a imagem ,no exemplo de cima eu teria que salvar a imagem em um lugar especifico, porem nao queria ter que salva-la e somente exibi-la no jsp…
algum caminho especifico para eu seguir ???
Mas foi o que eu falei, cara…
“Basicamente o que tens que fazer é trocar a aprte que lê o arquivo do sistema e passar a ler do BD.”
Não sei como tás fazendo pra buscar do banco, mas encontrei um artigo legal na internet.
O grosso pra mostrar a imagem no servlet, é isso:
[code] // Get the image Blob from the database
Blob blob = rs.getBlob( 1 );
InputStream in = blob.getBinaryStream();
// Output the blob to the HttpServletResponse
res.setContentType( "image/jpeg" );
BufferedOutputStream out = new BufferedOutputStream( res.getOutputStream() );
byte by[] = new byte[ 32768 ];
int index = in.read( by, 0, 32768 );
while ( index != -1 )
{
out.write( by, 0, index );
index = in.read( by, 0, 32768 );
}
out.flush();[/code]
Se quiseres o código fonte inteiro da galeria, tá nesse site: aqui
Ah, tá em inglês.
[]s