Problemas ao efetuar o UPLOAD de arquivos usando commons-fileupload-1.1.1

5 respostas
J

Pessoal estou tentando fazer um exemplo bem simples de upload de arquivos usando a lib do jakarta commons-fileupload-1.1.1 com Servlet, e peguei o proprio exemplo q eles fornecem que é justamente esse abaixo:

protected void doPost(HttpServletRequest req, HttpServletResponse res) {
        DiskFileItemFactory factory = new DiskFileItemFactory();
        // maximum size that will be stored in memory
        factory.setSizeThreshold(4096);
        // the location for saving data that is larger than getSizeThreshold()
        factory.setRepository(new File("/tmp"));

        ServletFileUpload upload = new ServletFileUpload(factory);
        // maximum size before a FileUploadException will be thrown
        upload.setSizeMax(1000000);

        List fileItems = null;
		try {
			fileItems = upload.parseRequest(req);
		} catch (FileUploadException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
        // assume we know there are two files. The first file is a small
        // text file, the second is unknown and is written to a file on
        // the server
        Iterator i = fileItems.iterator();
        String comment = ((FileItem)i.next()).getString();
        FileItem fi = (FileItem)i.next();
        // filename on the client
        String fileName = fi.getName();
        // save comment and filename to database
        // write the file
        try {
			fi.write(new File("/tmp/", fileName));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    }

E o código do form é esse:

<form action="/UploadFile/UpFile" method="post" enctype="multipart/form-data" name="form1" id="form1">
  <label>
  <input type="file" name="file" />
  </label>
  <label>
  <input type="submit" name="Submit" value="Submit" />
  </label>
</form>

E está dando a seguinte Exception:

HTTP Status 500 -

type Exception report

message

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

exception

javax.servlet.ServletException: Error instantiating servlet class UpFile

org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)

org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)

org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)

org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)

org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)

org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)

org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)

java.lang.Thread.run(Unknown Source)

root cause

java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException

java.lang.Class.getDeclaredConstructors0(Native Method)

java.lang.Class.privateGetDeclaredConstructors(Unknown Source)

java.lang.Class.getConstructor0(Unknown Source)

java.lang.Class.newInstance0(Unknown Source)

java.lang.Class.newInstance(Unknown Source)

org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)

org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)

org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)

org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)

org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)

org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)

org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)

java.lang.Thread.run(Unknown Source)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.


Apache Tomcat/5.5.17

[color=red]:: Alguem já passou por isso antes? Como faço para resolver isso? ::[/color]

5 Respostas

rodrigo_gomes

colocou o jar necessario no lib de sua aplicação?

J

Sim, pois se não tiver-se nem compilava.

rodrigo_gomes

Olá,

Uma coisa é você compilar uma classe usando um jar qualquer, outra coisa é esse jar estar disponivel no lib de sua aplicação.

Ele está dando esse erro porque não está achando essa classe que aparece no stacktrace.

[]´s
Rodrigo

J

rodrigo_gomes valeu pela força,
respondendo sua pergunta o jar estava em minha aplicação certinho lá no build path e mesmo assim dava o exception, dai achei que deveria ser o jar que estaria com problemas, mas um amigo teve a idéia de pegar o SCR e compilar direto no projeto, só assim funcionou.

Valeu e abraços.

dbispo

Bem…
Na verdade o jar tem que estar necessariamente dentro da pasta lib da sua aplicação…

Criado 25 de novembro de 2006
Ultima resposta 28 de nov. de 2006
Respostas 5
Participantes 3