Amigos,
Consegui inserir e visualizar as imagens no banco de dados MySql, porém estou com outra duvida, primeiro vou postar o que fiz para resolver, caso alguém passe pela mesma situação:
Abaixo a inserção:
String comando = "Insert into contato (nome, telefone, celular, dataNascimento, endereco, cidade, estado, imagem)"
+ " values (?,?,?,?,?,?,?,?)";
File arquivo = new File("G:/LOGO.png");
FileInputStream inputStream = new FileInputStream(arquivo);
PreparedStatement p;
try {
p = this.conexao.prepareStatement(comando);
p.setString(1, contato.getNome());
p.setString(2, contato.getTelefone());
p.setString(3, contato.getCelular());
// Tratando java.util.date para java.sql.date, pois o statement só
// aceita SQL
p.setDate(4, new java.sql.Date(contato.getDataNascimento()
.getTime()));
p.setString(5, contato.getEndereco());
p.setString(6, contato.getCidade());
p.setString(7, contato.getEstado());
p.setBinaryStream(8, inputStream, (int) arquivo.length());
p.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
abaixo a conversão
public class JPGManager {
static public void encodeJPG(OutputStream out, byte [] image) throws IOException{
InputStream fs = new ByteArrayInputStream(image);
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(fs);
BufferedImage bImage = decoder.decodeAsBufferedImage();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(bImage);
fs.close();
fs = null;
encoder = null;
bImage = null;
}
}
agora sim… a visualização, o pulo do gato foi criar uma servlet somente para visualizar a imagem?
<%@page import="action.JPGManager"%>
<%@page import="java.sql.Blob"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@page import="dao.FabricaConexao"%>
<%@ page language="java" import="java.lang.*" %>
<%
try {
// criando a conexao com o banco de dados
FabricaConexao fabrica = new FabricaConexao();
Connection conexao = fabrica.fazConexao();
Statement stm = conexao.createStatement();
int codigo;
// pegando o codigo da foto a ser exibida
if (request.getParameter("numero") == null)
codigo = 1;
else
codigo = Integer.parseInt(request.getParameter("numero"));
// procurando pela foto na tabela
ResultSet rs = stm.executeQuery("SELECT * FROM contato WHERE idContato = "+codigo);
if (rs.next()) {
// pegando o conteudo do campo foto (BLOB, binario)
Blob blob = rs.getBlob("imagem");
// Codificando para JPG e enviando para o browser, através do Output do servlet
JPGManager.encodeJPG(response.getOutputStream(), blob.getBytes(1, (int)
blob.length()) );
}
}catch (Exception e){
// erro
%>Erro encontrado<%
}
%>
esse link me auxiliou na maior parte: http://www.xtibia.com/forum/topic/52851-upload-de-imagens-para-banco-de-dados/
Agora vem minha duvida, logo no primeiro código que postei vocês podem observar que coloquei o caminho da imagem manual
File arquivo = new File("G:/LOGO.png");
FileInputStream inputStream = new FileInputStream(arquivo);
o meu problema está ai… tenho que fazer com que eu escolha a imagem pelo browser e não direto na fonte… abaixo o formulario que insiro os dados:
<%@page import="model.Contato"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Agenda de Contatos</title>
</head>
<body>
<form action="InserirContato" method="post">
Nome: <input type="text" name="nome"><br />
Telefone: <input type="text" name="telefone"><br />
Celular: <input type="text" name="celular"><br />
Nascimento: <input type="text" name="nascimento"><br />
Endereço: <input type="text" name="endereco"><br />
Cidade: <input type="text" name="cidade"><br />
Estado: <input type="text" name="estado"><br />
<input type="file" name="foto"> <br />
<br />
<input type="submit" value="Salvar" >
</form>
<br />
<br />
<form action="index.jsp">
<input width ="300" type="submit" value="Cancelar">
</form>
</body>
</html>
Agradeço a todos que puderem me auxiliar.
Willian Baldez