Upload de arquivo

3 respostas
C

Tou fazendo uma página jsp que faz o upload de um arquivo, peguei o utilitário fileupload do site da apache, e na especificação tem um código assim:

public void doPost(HttpServletRequest req, HttpServletResponse res)
    {
        DiskFileUpload fu = new DiskFileUpload();
        // maximum size before a FileUploadException will be thrown
        fu.setSizeMax(1000000);
        // maximum size that will be stored in memory
        fu.setSizeThreshold(4096);
        // the location for saving data that is larger than getSizeThreshold()
        fu.setRepositoryPath("/tmp");

        List fileItems = fu.parseRequest(req);
        // 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
        fi.write("/www/uploads/" + fileName);
    }

Na penúltima linha, fi.write("/www/uploads/" + fileName);, está errada, pois, de acordo com a API do FileItem, tem de ser da seguinte maneira:

public void write(java.io.File file)
           throws java.lang.Exception

E no caso está como java.lang.String ao invés de java.io.File, tentei executar e deu erro de incompatibidade, depois modifiquei para:

fi.write(new File("/www/uploads/" + fileName));

Assim é possível pois a API de java.io.File diz que o construtor pode receber um path como String, mas mesmo assim deu um monte de exception, alguém pode me ajudar, desde já fico muito grato.

3 Respostas

Rafael_Steil

Um monte de exceptions? legal… mas quais exceptions?

Rafael

C

Tipo essas:

type Exception report

message 

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

exception 

org.apache.jasper.JasperException: null
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause 

java.lang.NumberFormatException: null
	java.lang.Integer.parseInt(Integer.java:436)
	java.lang.Integer.parseInt(Integer.java:518)
	org.apache.jsp.cadastrarDoc_jsp._jspService(cadastrarDoc_jsp.java:54)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


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

Pela exception,

java.lang.NumberFormatException: null

parece que o erro nao eh com o codigo de upload ( pelo menos nao na parte que vc postou ). Algum lugar onde vc esta fazendo manipulacao de numeros ( chamando Integer.parseInt() ) esta falhando ( geralmente pq vc esta querendo converter uma String em um numero sendo que a String eh nula ou vazia ).

Rafael

Criado 9 de janeiro de 2005
Ultima resposta 9 de jan. de 2005
Respostas 3
Participantes 2