Qual o erro deste Servlet!?

3 respostas
adrmaster

Olá Pessoal,

Estou iniciando em Java para Web, axo que estou indo bem, pois eu meu primeiro trabalho, ja estou conseguindo terminar um sistema web.
Porém estou com uma dúvida: Tenho um Servlet para receber fotografias atravez de formulário.

Este servlet, recebe 10 fotos de um form, grava com um nome de arquivo que eu keria, pois atravez de um while eu fiz com que ele fosse jogando o nome de arquivo do tipo: img1.jpg, img2.jpg e etc. Ele tb faz uma cópia do arquivo e redimenciona essa foto, criando uma miniatura da foto original. So que quando eu faço a copia, meu servlet so processa alguns arquivos dos que foram passados por parametros, e os restantes ele so processa se eu for dando um refresh no brownser (a cada refresh ele processa mais um arquivo). alguem sabe me dizer o pq disso??

Ai vai o codigo do servlet:

package upload;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.List;
import java.util.Iterator;
import upload.Miniatura;
import org.apache.commons.fileupload.*; 
import org.apache.commons.*;
import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.servlet.*;

public class UploadDeArquivos extends HttpServlet {

@Override
public void init() throws ServletException {
super.init();

}

@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{

response.setContentType("text/html; charset=ISO-8859-1");

PrintWriter out = response.getWriter();
String codigo = request.getParameter("codigo");
String path = getServletContext().getRealPath("imagens/veiculos/carro" + codigo);

File arq = new File(path);  

//Verifica se a foto existe  
if (!arq.exists()) arq.mkdir();
org.apache.commons.fileupload.disk.DiskFileItemFactory factory = new org.apache.commons.fileupload.disk.DiskFileItemFactory();
org.apache.commons.fileupload.servlet.ServletFileUpload sfu = new ServletFileUpload(factory);


out.println("XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>");
out.println("<html xmlns='http://www.w3.org/1999/xhtml'>");
out.println("<head>");
out.println("<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />");
out.println("<title>PEAutos | Grupo PEvirtual</title>");
out.println("<link href='estilo.css' rel='stylesheet' type='text/css' />");
out.println("<style type='text/css'>");
out.println("<!--");

out.println("#quadro_ver_carro {");
out.println("	float: left;");
out.println("margin-top: 10px;");
out.println("margin-left: 6px;");
out.println("height: auto;");
out.println("margin-bottom: 10px;");
out.println("background-color: #F5F8FA;");
out.println("border: 1px dotted #A5BFD0;");
out.println("height:200px;");
out.println("width: 886px;");
out.println("}");
out.println("body {");
out.println("margin-top: 10px;");
out.println("margin-bottom: 10px;");
out.println("}");
out.println(".style3 {font-family: Tahoma; font-size: 11px; }");
out.println("-->");
out.println("</style>");
out.println("<link href='nav-h.css' rel='stylesheet' type='text/css'>");
out.println("</head>");

out.println("<body>");
out.println("<div id='all'>");
out.println("  <div id='corpo'>");
out.println("	<div id='portais'>");
out.println("    <div align='right'><img src='imagens/portais.jpg' name='logo_portais' width='91' height='28' id='logo_portais' /></div>");
out.println("  </div>");
out.println("  <div id='menu'><a href='index.jsp'><img src='imagens/logo.png' name='logo' width='176' height='114' border='0' id='logo' /></a>");
out.println("    <div id='linha_menu'>");
out.println("    <div id='menu'>");
out.println("      <ul id='navmenu-h'>");
out.println("        <li><a href='concmult.jsp'><strong>Concessionárias / Multimarcas</strong></a></li>");
out.println("        <li><a href='particulares.jsp'><strong>Particulares</strong></a></li>");
out.println("        <li><a href='classificados.jsp'><strong>Classificados</strong></a></li>");
out.println("        <li><a href='seguradoras.jsp'><strong>Seguradoras</strong></a></li>");
out.println("        <li><a href='autopecas.jsp'><strong>Auto Peças / AutoCenter</strong></a></li>");
out.println("        <li><a href='ajuda.jsp'><strong>Ajuda</strong></a></li>");
out.println("      </ul>");
out.println("    </div>");
out.println("  </div></div>");
out.println("  <div align='center'><img src='imagens/pub_principal.jpg' width='890' height='228' /></div>");
out.println("  <div id='quadro_ver_carro' style='height:auto;'>");
out.println("  <div id='titulo_ver_carro'>Painel de Controle</div>");
out.println("    <div id='opcionais' style='min-height:400px;' >");
out.println("      <div id='envie_email' style='padding-left:10px;'></div>");
out.println("      <p>");

out.println("        <a href='index.jsp'>Voltar</a>");

out.println("      </p>");
out.println("      <ul>");
out.println("        <li><a href='cadastro.jsp'>Cadastrar Veículo</a><br /><br /></li>");
out.println("        <li><a href='meus_carros.jsp'>Enviar Fotos</a><br />");
out.println("          <br />");
out.println("        </li>");
out.println("        <li>Remover Veículo<br /><br /></li>");
out.println("        <li>Imprimir Boleto</li>");
out.println("      </ul>");
out.println("      <blockquote>");
out.println("        <p><a href='index.jsp'>Voltar</a></p>");
out.println("      </blockquote>");
out.println("      <p>");
out.println(" ");
out.println("      </p>");
out.println("    </div>");
out.println("    <div id='quadro_proposta' style='min-height:400px;'>");
out.println("      <div id='envie_email' style='padding-left:10px;'>Status das Fotografias</div>");

try {

List list = sfu.parseRequest(request);
Iterator iterator = list.iterator();
//sfu.setSizeMax(20480);
int contador=0;
String nome_arquivo;
upload.Miniatura foto = new upload.Miniatura();
while(iterator.hasNext()){
	if (contador==0) 
	{
		nome_arquivo = "home";
	}
	else
	{
		nome_arquivo = "img" + contador;
	}
	org.apache.commons.fileupload.FileItem item = (org.apache.commons.fileupload.FileItem)iterator.next();

	if (!item.isFormField()){
		String filename = item.getName();
		
		if ((filename != null) && (!filename.equals(""))){
			filename = (new File(filename)).getName();
                        //AQUI EU GRAVO O ARQUIVO COM O NOME IMG+NUMERO+.JPG EX: img1.jpg
			item.write(new File(path + "/" + nome_arquivo + ".jpg"));
                        //AQUI EU FAÇO UMA COPIA QUE SERA REDIMENSIONADA PELO METODO FOTO (DE UMA OUTRA CLASSE) EX: img1t.jpg
			item.write(new File(path + "/" + nome_arquivo + "t" + ".jpg"));
			
			foto.imagesDir = path + "/" + nome_arquivo + ".jpg";
            foto.iniciar();
			

		}
		out.println("<p style='padding-left: 10px;'>");
		out.println("Seu arquivo:");
		out.println("<strong>");
		out.println(item.getName() + "</strong><br />");
		out.println("foi salvo como: /" + nome_arquivo + ".jpg no servidor.");
		out.println("</p>");
		
	}
	contador++;
}

out.println("      </div>");
out.println("    <div id='quadro_proposta' style='width:285px;'>");
out.println("      <div id='envie_email' style='padding-left:10px;'></div>");
out.println("      </div>");
out.println("    <p>&nbsp;</p>");
out.println("  </div>");
out.println("  </div>  ");
out.println("  <% } %>");
out.println("  <div id='base'></div>");
out.println("</div>");
out.println("</body>");
out.println("</html>");

}

catch (FileUploadException e) {
	e.printStackTrace();
	}catch (Exception e) {
	e.printStackTrace();
	}
	
}

@Override
public void destroy() {
super.destroy();
}

}

desde já agradeço a colaboraçao do pessoal

3 Respostas

LPJava

meu pai, dificil leitura isso, html + servlet =/.

furutani

Dá algum erro?

adrmaster

Concordo, me desculpe, mas bastava olhar o código java nao era mesmo??

ok… vou faciliar:

try {   
  
List list = sfu.parseRequest(request);   
Iterator iterator = list.iterator();   
//sfu.setSizeMax(20480);   
int contador=0;   
String nome_arquivo;   
upload.Miniatura foto = new upload.Miniatura();   
while(iterator.hasNext()){   
    if (contador==0)   
    {   
        nome_arquivo = "home";   
    }   
    else   
    {   
        nome_arquivo = "img" + contador;   
    }   
    org.apache.commons.fileupload.FileItem item = (org.apache.commons.fileupload.FileItem)iterator.next();   
  
    if (!item.isFormField()){   
        String filename = item.getName();   
           
        if ((filename != null) && (!filename.equals(""))){   
            filename = (new File(filename)).getName();   
                        //AQUI EU GRAVO O ARQUIVO COM O NOME IMG+NUMERO+.JPG EX: img1.jpg   
            item.write(new File(path + "/" + nome_arquivo + ".jpg"));   
                        //AQUI EU FAÇO UMA COPIA QUE SERA REDIMENSIONADA PELO METODO FOTO (DE UMA OUTRA CLASSE) EX: img1t.jpg   
            item.write(new File(path + "/" + nome_arquivo + "t" + ".jpg"));   
               
            foto.imagesDir = path + "/" + nome_arquivo + ".jpg";   
            foto.iniciar();   
               
  
        }   
        out.println("<p style='padding-left: 10px;'>");   
        out.println("Seu arquivo:");   
        out.println("<strong>");   
        out.println(item.getName() + "</strong><br />");   
        out.println("foi salvo como: /" + nome_arquivo + ".jpg no servidor.");   
        out.println("</p>");   
           
    }   
    contador++;   
}   
  
out.println("      </div>");   
out.println("    <div id='quadro_proposta' style='width:285px;'>");   
out.println("      <div id='envie_email' style='padding-left:10px;'></div>");   
out.println("      </div>");   
out.println("    <p> </p>");   
out.println("  </div>");   
out.println("  </div>  ");   
out.println("  <% } %>");   
out.println("  <div id='base'></div>");   
out.println("</div>");   
out.println("</body>");   
out.println("</html>");   
  
}   
  
catch (FileUploadException e) {   
    e.printStackTrace();   
    }catch (Exception e) {   
    e.printStackTrace();   
    }   
       
}

Não dá nenhum erro, até funciona normal se eu coloco assim:

item.write(new File(path + "/" + nome_arquivo + ".jpg"));

Porém, ao fazer a cópia do arquivo:

item.write(new File(path + "/" + nome_arquivo + ".jpg"));   
           item.write(new File(path + "/" + nome_arquivo + "t" + ".jpg"));

aí sim dá nao funciona como deveria, nao apresenta nenhuma exceção, mas tb so escreve alguns arquivos, os outros que foram passados por parametro ele so vai escrevendo quando vou dando refresh na página.

Agradeço mais uma vez a colaboração de todos.

Criado 8 de novembro de 2009
Ultima resposta 8 de nov. de 2009
Respostas 3
Participantes 3