Como fazer um cadastro de produtos com upload de foto?

[quote=MarcioJAVA]Cara mais uma coisa, na foto vai dar erro… vc tá tentando gravar uma String. Ele vai gravar… mas não a foto.

vc vai ter que fazer o seguinte:
Suponhamos que vc armazenava a foto num objeto Image, com nome img:

Image img;

quando for armazenar, use o lance do ByteArrayOutputStram e DataOutputStram e writeObject
quando for ler use o ByteArrayInputStram e DatainputStram e readObject

esse readObject recebo o getBytes, e monta um objeto
faça un casting para o Image…

mais ou menos assim:

ByteArrayInputStream bais = new ByteArrayInputStream(); DataInputStream dis = new DataInputStream(bais); Object o = dis.readObject(rs.getBytes()); img = (Image) o; [/quote]

Deixa eu ver se entendi Marcio. vc que dizer que a forma como estou armazenando a imagem de forma incorreta?
No caso teria que ficar dessa forma:

[code]# <%

try{

Class.forName(“com.mysql.jdbc.Driver”);

Connection con2 = DriverManager.getConnection(“jdbc:mysql://localhost/master”,“root”,“senha”);

String sql2 = “update produtos set foto = ? where codigo_barra_produto = '”+request.getParameter(“codigoField”)+"’";

PreparedStatement st2 = con2.prepareStatement(sql2);

//st.setString(1, request.getAttribute(“comentario”));

ByteArrayOutputStream baos = new ByteArrayOutputStream();

DataOutputStream oos = new DataOutputStream(baos);

oos.writeObject(“uploadfile”);

st2.setBytes(1, baos.toByteArray());

//out.println(st);

st2.executeUpdate();

}catch(Exception ex){

out.println(“Houve uma excessão ao inserir no banco” + ex);

}

%> [/code]

e para fazer o retorno da imagem uso esse codigo:

ByteArrayInputStream bais = new ByteArrayInputStream();
DataInputStream dis = new DataInputStream(bais);
Object o = dis.readObject(rs.getBytes());
img = (Image) o;

e para fazer com que a imagem seja exibida na como é que especifico?
seria dessa forma?
<%=rs.getBytes(img)%>

agradeço a atenção!

para seu jsp exibir uma imagem armazenada no banco você precisa entender como o html exibe imagens…

no seu html você coloca o endereço de uma imagem no servidor…

o browser lê a tag de imagem e faz uma nova requisição para o servidor para retornar apenas a imagem daquele endereço…

com isso você tem duas alternativas:

  • grava a imagem num arquivo temporário e coloca o link apontando para este arquivo. (esta é a solução PORCA)

  • crie um servlet “especialista” que retornará só a imagem… procure aqui no guj que tem exemplos de como fazer isso…