Help me! Carregar imagem e visualizar na tela

0 respostas
N

Pessoal, eu sei que o fórum já está cheio de dúvidas sobre este assunto, mas não consegui encontrar solução para o meu caso, então se alguém puder me ajudar ... agradeço muito!

Meu problema é o seguinte:

Estou fazendo o cadastro de um vídeo, após salvar os dados do vídeo no banco, chamo a página jsp pra que o usuário carregue a imagem do vídeo. A questão é que quando salvo os dados do vídeo ele está chamando o método inserir duas vezes, a primeira vez salva com os dados do vídeo e a segunda salva um código sem nada preenchido. Isso só acontece se eu chamar a página jsp de cadastro da imagem. Se eu chamar o próprio formulário de cadastro de dados do vídeo não duplica o código. Mas ele salva direitinho o caminho da imagem, só que só mostra na tela depois que eu dou um F5 no eclipse.

Alguém tem alguma idéia do que possa ser isso??

Vou postar ak meus códigos:

Formulário frm_cadastro_imagem_video.jsp

<jsp:useBean id="nomeImagem" scope="request" class="java.lang.String" />
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>V&iacute;deoLoc</title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<link href="estilo.css" rel="stylesheet" type="text/css" />
</head>
<body>
<table width="800" border="0" cellspacing="0" cellpadding="0"
	align="center">
	<tr>
		<td colspan="2" align="center"><%@ include file="topo.jsp"%></td>
	</tr>
	<tr>
		<td width="220" align="center" valign="top"><%@ include
			file="frm_menu_lateral.jsp"%></td>
		<td width="580" align="left" valign="top">
		<table>
			<tr>
				<td width="572" class="rotuloalaranjado">Cadastro de V&iacute;deos</td>
			</tr>
		</table>
		<form action="CImagem?codigo=${video.vidCodigo}" method="post" name="cadastro_video" enctype="multipart/form-data">
		<table width="600" border="0" align="right" cellpadding="1" cellspacing="1" id="table">
			<tr>
			  <td height="47" colspan="2" class="imgrosa" align="center">${mensagem}</td>
		  </tr>
			<tr>
			  <td width="27%" rowspan="2" align="right">Imagem do filme </td>
			  <td width="73%">
			  <table width="418" border="0">
                <tr>
                  <td width="113" align="center"><img src="${nomeImagem}" alt="Insira uma imagem!" name="Foto" width="110" height="150" id="Foto"/></td>
                  <td width="295"><font color="#000066" size="1" face="Verdana, Arial, Helvetica, sans-serif">Voc&ecirc; pode carregar um arquivo JPG, GIF ou PNG (tamanho m&aacute;ximo de 500KB). N&atilde;o carregue fotos que contenham imagens de menores de idade, animais de estima&ccedil;&atilde;o, personagens de desenho animado, pessoas famosas, nudez, trabalho art&iacute;stico ou outro material protegido por direitos autorais.</font> </td>
                </tr>
              </table></td>
		  </tr>
			<tr>
			  <td><table width="414" border="0">
                <tr>
                  <td width="354">
				  <input name="txtImagem" type="file" accept="image/jpeg; image/gif; image/bmp; image/png" id="imagem" class="dados" maxlength="60" tabindex="1" value="c:/">
				  </td>
                  <td width="50"><input id="botao" src="images/atualizar.png" value="Confirmar" border="0" type="image" width="50" height="50" alt="Salvar"></td>
                </tr>
              </table></td>
		  </tr>
			<tr>
			  <td>&nbsp;</td>
			  <td><table width="416" border="0">
                			<tr>
				<td width="59">
					<div align="right">
						<input id="botao" src="images/salvar.png" value="Confirmar" border="0" type="image" width="50" height="50" alt="Salvar">
					</div>			
				</td>
				<td width="42">&nbsp;</td>
				<td width="297">
					<div align="left">
						<a href="index.jsp"><img src="images/cancelar.png" alt="Cancelar" width="50" height="50" border="0"></a>
				    </div>			
				</td>
				<td width="0">
				</td>
			</tr>    

              </table></td>
		  </tr>
		</table>
		<input name="txtCodigo" type="hidden" value="${video.vidCodigo}">
		</form>
		</td>
	</tr>
	<tr>
		<td colspan="2" align="center"><%@ include file="rodape.jsp"%></td>
	</tr>
</table>
</body>
</html>

Servlet da Imagem

package controle;

import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import persistencia.ImagemDao;

public class CImagem extends HttpServlet {

	// Process the HTTP Post request
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

	// Process the HTTP Get request
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		String cod = request.getParameter("codigo");

		int codigo;
		try {
			codigo = Integer.parseInt(cod);
		} catch (NumberFormatException e) {
			codigo = 0;
		}
		
		boolean isMultiPart = FileUpload.isMultipartContent(request);
		if (isMultiPart) {
			FileItemFactory factory = new DiskFileItemFactory();
			ServletFileUpload upload = new ServletFileUpload(factory);
			String formulario = "";
			try {
				List items = upload.parseRequest(request);
				Iterator iter = items.iterator();
				String nomeImagem = "";
				while (iter.hasNext()) {
					FileItem item = (FileItem) iter.next();
					if (item.getFieldName().equals("tipoForm")) {
						formulario = item.getString();
					}
					if (!item.isFormField()) {
						if (item.getName().length() > 0) {
							ImagemDao dao = new ImagemDao();
							nomeImagem = "images/filmes/" + dao.inserirImagemDiretorio(item, codigo);
						}
					}
				}
				
				request.setAttribute("nomeImagem", nomeImagem);
				RequestDispatcher rd = request.getRequestDispatcher("frm_cadastro_imagem_video.jsp");
				rd.forward(request, response);
			} catch (FileUploadException ex) {
				ex.printStackTrace();
			} catch (Exception ex) {
				ex.printStackTrace();
			}
		}
	}
	
}

ImagemDao.java

package persistencia;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import org.apache.commons.fileupload.FileItem;

import entidade.Video;

public class ImagemDao {
	
	private Connection con;
	
	public ImagemDao(){
		con = Conexao.getConnection();
	}
	
	public String inserirImagemDiretorio(FileItem item, int codigo) throws IOException {

		// Pega o diretório /logo dentro do diretório atual de onde a aplicação está rodando
		//String caminho = getServletContext().getRealPath("/images/filmes") + "/";
		
		String caminho = ("D:/UEG/4º ano/Materias/Projeto de Graduacao II - Leandro/Desenvolvimento/Meu Projeto/videoloc/WebContent/images/filmes");
		
		// Cria o diretório caso ele não exista
		File diretorio = new File(caminho);
		if (!diretorio.exists()) {
			diretorio.mkdir();
		}

		// Mandar o arquivo para o diretório informado
		String nome = item.getName();
		String arq[] = nome.split("\\\\");
		for (int i = 0; i < arq.length; i++) {
			nome = arq[i];
		}

		File file = new File(diretorio, nome);
		FileOutputStream output = new FileOutputStream(file);
		InputStream is = item.getInputStream();
		byte[] buffer = new byte[2048];
		int nLidos;
		while ((nLidos = is.read(buffer)) >= 0) {
			output.write(buffer, 0, nLidos);
		}
		output.flush();
		output.close();
		
		try {
			Video video = null;
			PreparedStatement pstmt = con.prepareStatement("update video set VIDIMAGEM = ? where VIDCODIGO = ?");
			pstmt.setString(1, "images/filmes/"+nome);
			pstmt.setInt(2, codigo);
			pstmt.execute();
			
		} catch (SQLException e) {
			e.printStackTrace();
			System.out.println("Erro na sql ao inserir imagem");
		}
		return nome;
		
	}
}

Pessoal, desde já agradeço a atenção!! Obrigada!!!

Criado 16 de outubro de 2007
Respostas 0
Participantes 1