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?
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
christianovalePJ
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.