Aplicaçao Web: Imagem no banco de Dados

3 respostas
C

Bom dia, estou com um problema e gostaria da ajuda de voces.
Preciso salvar uma imagem no banco de dados de uma aplicaçao Web.
Criei uma classe que salva e recupera a imgem em um campo Blob do MySql.
Quando executo em minha máquina local funciona sem problemas mas, quando fiz o deploy da aplicaçao para o servidor veio o problema.
Uso o seguinte codigo na minha classe DAO que insere a imagem no PreparedStatement:

(O método preferenciaContrato.getCaminhoImagem() retorna a url da imagem ex: C:\diretorio\imagem.jpg)

declaracao = conexao.prepareStatement(sql.toString());
 File arquivo = new File(preferenciaContrato.getCaminhoImagem());
 FileInputStream inputStream = new FileInputStream(arquivo);
 declaracao.setBinaryStream(i++, inputStream, (int) arquivo.length());
 declaracao.executeUpdate();

Porém, como a classe DAO está no servidor este caminho (da imagem) nao é encontrado. E me retorna o seguinte erro:

A questão é: Como eu faço para fazer este UpLoad da imgem e salva-la no banco de Dados?

Obrigado desde já.

3 Respostas

A

Não é melhor você fazer upload para o file system do servidor e colocar no Banco o caminho físico em um campo varchar?
Para fazer upload usando Struts:

public ActionForward perform_upload_action(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { HttpSession session = request.getSession(true); ActionForward actionForward = null; try { try { UploadActionForm f = (UploadActionForm) form; if (f.getImagem() != null && f.getImagem().toString() != null && f.getImagem().toString().length() > 0) { String realPath0bl_form_Produto = "/tomcat/temp";//path do diretório para onde é feito o upload. realPath0bl_form_Produto = realPath0bl_form_Produto + java.io.File.separator; org.apache.struts.upload.FormFile inputfile0bl_form_Produto = f.getImagem(); java.io.InputStream stream0bl_form_Produto = inputfile0bl_form_Produto.getInputStream(); java.io.OutputStream bos0bl_form_Produto = new java.io.FileOutputStream(realPath0bl_form_Produto + inputfile0bl_form_Produto.getFileName()); int bytesRead0bl_form_Produto = 0; byte[] buffer0bl_form_Produto = new byte[8192]; while ((bytesRead0bl_form_Produto = stream0bl_form_Produto.read(buffer0bl_form_Produto, 0, 8192)) != -1) { bos0bl_form_Produto.write(buffer0bl_form_Produto, 0, bytesRead0bl_form_Produto); } bos0bl_form_Produto.close(); stream0bl_form_Produto.close(); } } finally { } actionForward = mapping.findForward("same"); } catch (Exception e) { ActionErrors errors = new ActionErrors(); errors.add("ActionErrors.GLOBAL_ERROR_bl_form_Produto", new ActionError("error.action.exception",com.egen.util.system.Error.getMessage(e))); request.setAttribute(org.apache.struts.Globals.ERROR_KEY, errors); session.setAttribute("exception", com.egen.util.system.Error.getDescription(e)); actionForward = mapping.findForward("same"); } return actionForward; }

Depois você grava o caminho no campo que terá um bean e exibe no JSP usando a tag img src.

C

Bom, na verdade eu jah tenho em meu sistema um Objeto que possui como um dos atributos um objeto ImageIcon. Eu preciso enviar a imagem para esse atributo que daí em diante a minha classe DAO faz a inserçao na tabela do banco de Dados.

Entao, estou tendo dificuldades em fazer esse upload da imagem.

Detalhe: nao estou usando Struts.

Existe alguma outra forma?

A

Veja se te ajuda:

http://www.portaljava.com/home/modules.php?name=Forums&file=viewtopic&t=29583&highlight=blob

Criado 20 de julho de 2006
Ultima resposta 20 de jul. de 2006
Respostas 3
Participantes 2