Upload de Imagens

1 resposta
tvieira

Bom Dia a todos!

Ja pesquisei bastante, ví alguns tópicos aqui no fórum, mas nada que me ajudasse ou funcionasse aqui. Estou tentando fazer o upload de imagens para o servidor pelo FileUpload, mas esta dando erro. Segue abaixo os códigos das páginas:

cadastrar_cd.jsp

<%@page import="java.io.FileInputStream"%>
<%@page import="java.io.File"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ include file="cabecalho.jsp" %>
<%@ include file="menu.jsp" %>
<jsp:useBean id="daoCategoriaCD" scope="page" class="webmundo.dao.CategoriasDAO" />
<jsp:useBean id="cds" scope="page" class="webmundo.modelo.CDS" />
<jsp:useBean id="daoCDS" scope="page" class="webmundo.dao.CdsDAO" />
<jsp:useBean id="conexao" scope="page" class="webmundo.conexao.ConexaoBd" />

<div class="principal">
    
    <h2>Cadastrar CD</h2>
    
    <form action="ServletCadastrarCD" method="post" enctype="multipart/form-data">
        <label for="titulo">Titulo do CD:</label><br>
        <input type="text" name="titulo" id="titulo" /><br><br>
        
        <label for="autor">Cantor(a) / Banda:</label><br>
        <input type="text" name="autor" id="autor" /><br><br>
        
        <label for="estilo">Estilo:</label><br>
        <select name="categoria" id="categoria">
            <option value="">Escolha um Estilo</option>
            <%
                List<Categorias> categoriasCD = daoCategoriaCD.listarCategorias();
                for (Categorias categoria : categoriasCD) {
                    out.println("<option value=\"" + categoria.getCat_id() + "\">" + categoria.getCat_titulo() + "</option>");
                }
                %>
        </select><br><br>
        
        <label for="imagemCD">Imagem do CD:</label><br>
        <input type="file" name="imagemCD" id="imagemCD" /><br><br>
        
        <input type="hidden" name="sessao" value="<%= sessao.getAttribute("id_logado").toString()%>" />
        <input type="submit" value="Cadastrar CD" />
    </form>
    
</div>

<%@ include file="rodape.jsp" %>

ServletCadastrarCD.java

package webmundo.acao;

import java.io.File;
import webmundo.dao.CdsDAO;
import webmundo.modelo.CDS;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadException;

@WebServlet(name = "ServletCadastrarCD", urlPatterns = {"/ServletCadastrarCD"})
public class ServletCadastrarCD extends HttpServlet {
    
    private String titulo, autor, imagemURL;
    private int cd_usu_id, cd_cat_id;
    
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        titulo = request.getParameter("titulo");
        autor = request.getParameter("autor");
        cd_cat_id = Integer.parseInt(request.getParameter("categoria"));
        cd_usu_id = Integer.parseInt(request.getParameter("sessao"));
        imagemURL = request.getParameter("imagemCD");
        
    }

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, FileUploadException, Exception {
        
        String caminho_imagem = null;
        boolean isMultipart = FileUpload.isMultipartContent(request);
        if (isMultipart) {
            DiskFileUpload upload = new DiskFileUpload();
            upload.setSizeMax(50*1024*1024);
            upload.setRepositoryPath("C:/imagem/");
            
            List items = upload.parseRequest(request);
            
            Iterator it = items.iterator();
            while (it.hasNext()) {
                FileItem fitem = (FileItem) it.next();
                if (!fitem.isFormField()) {
                    try {
                        fitem.write(new File("C:/imagem/" + (new File(fitem.getName())).getName() ));
                    } catch (Exception ex){
                        System.out.println("Problemas ao pegar o nome do arquivo! Erro: " + ex.getMessage());
                        ex.printStackTrace();
                    }
                    System.out.println(fitem.getName());
                    caminho_imagem = "C:/imagem/"+fitem.getName();
                    System.out.println("O arquivo enviado foi: " + caminho_imagem + "e o seu tamanho é de: " + fitem.getSize() + "bytes!");
                }
            }
        }
        
        CDS cds = new CDS();
        cds.setCd_imagemURL(caminho_imagem);
        cds.setCd_titulo(titulo);
        cds.setCd_autor(autor);
        cds.setCd_cat_id(cd_cat_id);
        cds.setCd_usu_id(cd_usu_id);
        
        try {
            CdsDAO dao = new CdsDAO();
            if (dao.cadastrarCD(cds) == true) {
                    response.sendRedirect("cadastrar_cd.jsp");
            }
        } catch (Exception e) {
            System.out.println("Erro ao cadastar! Erro: " + e.getMessage());
            e.printStackTrace();
    }
}

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
    }

}

ERRO que esta dando agora:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.NumberFormatException: null
	java.lang.Integer.parseInt(Unknown Source)
	java.lang.Integer.parseInt(Unknown Source)
	webmundo.acao.ServletCadastrarCD.doPost(ServletCadastrarCD.java:31)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.21 logs.
Só que na linha 84 tem o
cd_cat_id = Integer.parseInt(request.getParameter("categoria"));
é no formulário esse valor não é null, estou colocando o valor no form.

Alguém poderia me ajudar?

Desde já agradeço.

1 Resposta

Thishinoda

Coloque um breakpoint na linha 31, entre no debug e veja se o valor de

request.getParameter("categoria")

está vindo corretamente (apesar de você já ter dito que no formulário não está null).

Criado 26 de novembro de 2011
Ultima resposta 29 de nov. de 2011
Respostas 1
Participantes 2