Erro com upload

pessoal estou tentando fazer um upload usando a commons.fileupload da jakarta peguei um código aqui do guj mesmo mas esta me retornando um erro:

upload.jsp

<%@ page import="org.apache.commons.fileupload.*, java.util.List, java.io.File, java.util.Iterator" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title></title>
</head>
<body>
<%
// first check if the upload request coming in is a multipart request
boolean isMultipart = FileUpload.isMultipartContent(request);


DiskFileUpload upload = new DiskFileUpload();
upload.setSizeMax(1024*1024*3);  // 3 Mb
// parse this request by the handler
// this gives us a list of items from the request
List items = upload.parseRequest(request);

Iterator itr = items.iterator();

while(itr.hasNext()) {
	FileItem item = (FileItem) itr.next();

	// check if  the current item not is a form field or an uploaded file
	if(!item.isFormField()) {



		// the item must be an uploaded file save it to disk. Note that there
		// seems to be a bug in item.getName() as it returns the full path on
		// the client's machine for the uploaded file name, instead of the file
		// name only. To overcome that, I have used a workaround using
		// fullFile.getName().
		File fullFile  = new File(item.getName());
		String nome = fullFile.getName();//pega o nome do arquivo
		String extensao=nome.substring(nome.length()-3,nome.length());//pega a estenção do arquivo
		out.println(nome+"<br>");
		out.println(extensao+"<br>");
		if (extensao.equalsIgnoreCase("JPG")) {//só envia se for JPG
   		  File savedFile = new File(getServletContext().getRealPath("/ola/"),fullFile.getName());
   		  item.write(savedFile);
		}
		else {
           out.println("Não enviando. Use apenas JPG");
		} 	
	}
}
%>
</body>
</html>

mas esta me dando o seguinte erro:

org.apache.jasper.JasperException: An exception occurred processing JSP page /administrativo/cad_banners/upload.jsp at line 22

19: upload.setSizeMax(1024*1024*3);  // 3 Mb
20: // parse this request by the handler
21: // this gives us a list of items from the request
22: List items = upload.parseRequest(request);
23: 
24: Iterator itr = items.iterator();
25: 


Stacktrace:
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:417)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

se alguem puder me ajudar!

Ao invés de usar DiskFileUpload utilize ServletFileUpload

// Create a factory for disk-based file items
			DiskFileItemFactory factory = new DiskFileItemFactory();
			// Set factory constraints
			factory.setSizeThreshold(1);
			// Create Temp Repository
			File fileTemp = new File("C:\\Temp");
			factory.setRepository(fileTemp);
            // Create a new file upload handler
			ServletFileUpload upload = new ServletFileUpload(factory);
			// Set overall request size constraint  in bytes
			upload.setSizeMax(4000000);
			// Parse the request

Tenho que baixar alguma outra lib pois esta me dando esse erro:

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 10 in the jsp file: /administrativo/cad_banners/upload.jsp
DiskFileItemFactory cannot be resolved to a type
7:        boolean isMultipart = FileUpload.isMultipartContent(request);  
8:        if (isMultipart) {  
9:           // Create a new file upload handler  
10:          DiskFileItemFactory factory = new DiskFileItemFactory();
11: 		 upload.setSizeThreshold(1);  
12: 		 File fileTemp = new File("C:\\Temp");
13:            


An error occurred at line: 10 in the jsp file: /administrativo/cad_banners/upload.jsp
DiskFileItemFactory cannot be resolved to a type
7:        boolean isMultipart = FileUpload.isMultipartContent(request);  
8:        if (isMultipart) {  
9:           // Create a new file upload handler  
10:          DiskFileItemFactory factory = new DiskFileItemFactory();
11: 		 upload.setSizeThreshold(1);  
12: 		 File fileTemp = new File("C:\\Temp");
13:            


An error occurred at line: 11 in the jsp file: /administrativo/cad_banners/upload.jsp
upload cannot be resolved
8:        if (isMultipart) {  
9:           // Create a new file upload handler  
10:          DiskFileItemFactory factory = new DiskFileItemFactory();
11: 		 upload.setSizeThreshold(1);  
12: 		 File fileTemp = new File("C:\\Temp");
13:            
14:          // Set upload parameters  


An error occurred at line: 18 in the jsp file: /administrativo/cad_banners/upload.jsp
ServletFileUpload cannot be resolved to a type
15:          factory.setSizeMax(50*1024*1024); //50Mb  
16:          factory.setRepositoryPath("c:/temp");  
17:          factory.setRepository(fileTemp);
18: 		 ServletFileUpload upload = new ServletFileUpload(factory);
19: 		 upload.setSizeMax(4000000);
20:          // Parse the request  
21:          //List items = upload.parseRequest(request);  


An error occurred at line: 18 in the jsp file: /administrativo/cad_banners/upload.jsp
ServletFileUpload cannot be resolved to a type
15:          factory.setSizeMax(50*1024*1024); //50Mb  
16:          factory.setRepositoryPath("c:/temp");  
17:          factory.setRepository(fileTemp);
18: 		 ServletFileUpload upload = new ServletFileUpload(factory);
19: 		 upload.setSizeMax(4000000);
20:          // Parse the request  
21:          //List items = upload.parseRequest(request);  

A biblioteca commons-fileupload esta no seu WEB-INF/lib?

sim e as classes estao todas la…
estou importando assim: org.apache.commons.fileupload.*

Estou levantando esse post para não abrir outro com o mesmo assunto e porque ainda não foi respondido.

Estou com o mesmo problema do amigo acima.
O erro é manifestado pela linha “List items = upload.parseRequest(request);”

O erro no apache:

exception

javax.servlet.ServletException: Servlet execution threw an exception
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

root cause

java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream
org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:196)
org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:358)
org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
servlets.ServletUpload.doGet(ServletUpload.java:69)
servlets.ServletUpload.doPost(ServletUpload.java:54)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

root cause

java.lang.ClassNotFoundException: org.apache.commons.io.output.DeferredFileOutputStream
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:196)
org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:358)
org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
servlets.ServletUpload.doGet(ServletUpload.java:69)
servlets.ServletUpload.doPost(ServletUpload.java:54)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

Ola, vc precisa da lib commons-io

http://commons.apache.org/io/

Ramilani12, meu garoto, quer uma massagem no ego?
Você é o melhor!!!

Valeu, resposta curta; resultado imediato.
Por mim, tá dado como resolvido.

Antes que alguém me peça, lá vai o código:

package servlets;

import com.mysql.jdbc.Blob;
import java.sql.*;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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


public class ServletUpload extends HttpServlet {

    Connection conexao = null;

    public void init() throws ServletException {
        doConnect();
    }

    public void doConnect(){
        String enderecoDB = "jdbc:mysql://localhost:3306/blueshooter";
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conexao = (Connection) DriverManager.getConnection(enderecoDB,"root","1");
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(ServletUpload.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(ServletUpload.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    //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 {

        boolean isMultiPart = FileUpload.isMultipartContent(request); //<-Deprecated, mas funciona.
        if (isMultiPart) {
            FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            String formulario = "";
            try {
                //O ERRO ERA AQUI!!!
                List items = upload.parseRequest(request);
                Iterator iter = items.iterator();
                while (iter.hasNext()) {
                    FileItem item = (FileItem) iter.next();
                    if (item.getFieldName().equals("tipoForm")) {
                        formulario = item.getString();
                    }
                    if (!item.isFormField()) {
                        if (item.getName().length() > 0) {
                            this.inserirImagem(item);
                        }
                    }
                }
            }catch (FileUploadException ex) {
                System.out.println(ex);
                ex.printStackTrace();
            }catch (Exception ex) {
                System.out.println(ex);
                ex.printStackTrace();
            }
        }
    }

    /**
    * @param item FileItem, representa um arquivo que é enviado pelo formulario
    * MultiPart/Form-data
    * @throws IOException
    * @throws ServletException
    */
    private  void inserirImagem(FileItem item) {
        PreparedStatement declaracao = null;

        //bImagem é um campo LONGBLOB.
        String sql = "INSERT INTO midia (iId,sDescricao, bImagem) VALUES(null,?, ?)";

        try {
            //declaracao = conexao.prepareStatement(sql);
            declaracao = (PreparedStatement) conexao.prepareStatement(sql);
            
            declaracao.setString(1, "imagem.bmp"); //descrição
            declaracao.setBinaryStream(2, item.getInputStream(), (int) item.getSize() );
            declaracao.executeUpdate();
        } catch (SQLException ex) {
            ex.printStackTrace();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    public ImageIcon recuperaImagem() {
        Statement declaracao = null;
        ResultSet resultado = null;
        StringBuffer sql = new StringBuffer();
        sql.append("SELECT imagem FROM midia WHERE iId = 1");
        ImageIcon imagem = null;

        try {
            declaracao = conexao.createStatement();
            resultado = declaracao.executeQuery(sql.toString());

            if (resultado.next()) {
                Blob blob = (Blob) resultado.getBlob("bImagem");
                if (blob!=null){
                    imagem = new ImageIcon(blob.getBytes(1,(int) blob.length()));
                }
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        return imagem;
    }

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
    } 
}

Opa, legal! :stuck_out_tongue: