UploadFile c/ Servlet

Boa noite senhores,

Estou fazendo um fileupload com servlet usando o jakarta fileupload.
mas meu problema não é enviar o arquivo. é sim resgatar mais um parametro do meu form, eu li em alguns foruns e outrso sites. que quando o form é multpart/form-data ele nao funciona com o request.getParameter(“item”);,
gostaria de saber se existe alguma outra forma de recuperar esse parametro:

posto aqui meu servlet de upload, com restriçao de tamanho e de extenção e mudança de nome para a data e hora ,funcinando.

[code]/*

  • uploadServlet.java
  • Created on March 17, 2007, 4:26 PM
    */

package upload;

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;

import javax.servlet.;
import javax.servlet.http.
;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadBase;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

/**
*

  • @author Razbrouser
  • @version
    */
    public class uploadServlet extends HttpServlet {

private String msg = null;
private String path=“C:\temp\”;
private String filename = null;
public String getMsg() {
return msg;
}

public void setMsg(String msg) {
    this.msg = msg;
}

public String getPath() {
    return path;
}

public void setFilename(String filename) {
    this.filename = filename;
}

public String getFilename() {
    return filename;
}


protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

// String idProjeto = request.getInputStream(“idProjeto”);

    int MB = 1024 * 1024;
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);       
    FileItemFactory factory = new DiskFileItemFactory();   
    ServletFileUpload upload = new ServletFileUpload(factory);
    
    try{
        upload.setSizeMax(MB);

        List items = upload.parseRequest(request);
        Iterator iter = items.iterator();

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

            if(!item.isFormField()){
                setFilename(item.getName());
                if((getFilename()!=null)&&(!getFilename().equals(""))){
                    if(isPermission(getFilename())){
                        setFilename((new File(getFilename())).getName());
                        String[] nomeSplit = getFilename().split("\\.");
                        setFilename(nomeData()+"."+nomeSplit[1]);
                        item.write(new File(getPath() +getFilename()));
                        setMsg(getFilename()+" - Arquivo enviado com sucesso!");
                    }
                    else{
                        setMsg("Arquivo não permitido para upload");
                        imprimir(request, response);
                    }
                }
            }
        }
    }
    catch(FileUploadBase.SizeLimitExceededException slee){
        slee.printStackTrace();
        setMsg("Tamanho exedido"); 
        setFilename("");
        imprimir(request, response);
    }
    catch(Exception e){
        e.printStackTrace();     
    }

// response.sendRedirect(“index.jsp”);
response.setContentType(“text/html;charset=UTF-8”);
PrintWriter out = response.getWriter();

    out.println("<html>");
    out.println("<head>");
    out.println("<title>Servlet uploadServlet</title>");
    out.println("</head>");
    out.println("<body>");
    out.println("File Uploaded Proprieties <br><rh>");
    out.println("nome do arquivo: <strong>"+ getFilename() +"</strong><br>");
    out.println("path do arquivo: <strong>"+ getPath() +"</strong><br>");

// out.println(“idProjeto: “+ idProjeto +”
”);
out.println(“Erro de tamanho: “+ getMsg() +””);
out.println("");
out.println("");

    out.close();
    

    
}
private boolean isPermission(String fileName){
    String lowerCaseName = fileName.toLowerCase();
    StringTokenizer st = new StringTokenizer("jpg,JGP,jpeg,JPEG,gif,GIF,doc,DOC,txt,TXT"," ,");
    while(st.hasMoreTokens()){
        if(lowerCaseName.endsWith("."+st.nextToken())){
           return true; 
        }
    }
    return false;
}

private void imprimir (HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    
    out.println("<html>");
    out.println("<head>");
    out.println("<title>Servlet uploadServlet</title>");
    out.println("</head>");
    out.println("<body>");
    out.println("File Uploaded errors <br><rh>");
    out.println("Erro: <strong>"+ getMsg() +"</strong>");
    out.println("</body>");
    out.println("</html>");

    out.close();
}

private String nomeData(){
    Date hoje = new Date(); 
    System.out.println ("A data de hoje é: "+ hoje);
    SimpleDateFormat formatter = new SimpleDateFormat("yyMMddhhmmss"); 
    String nome = formatter.format(hoje);
    return nome;
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/** Handles the HTTP <code>GET</code> method.
 * @param request servlet request
 * @param response servlet response
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
    processRequest(request, response);
}

/** Handles the HTTP <code>POST</code> method.
 * @param request servlet request
 * @param response servlet response
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
    processRequest(request, response);
}

/** Returns a short description of the servlet.
 */
public String getServletInfo() {
    return "Short description";
}
// </editor-fold>

}
[/code]

aki esta o jsp:

[code]<%@page contentType=“text/html”%>
<%@page pageEncoding=“UTF-8”%>

JSP Page
<h1>JSP Page</h1>

<form name="form1" method="post" action="uploadServlet" enctype="multipart/form-data">
    Arquivo:<input type="file" name="fileItem" value="" width="30" />
    Projeto:<input type="text" name="idProjeto" id="idProjeto" value="33" />
    <input type="submit" value="Send" />
</form>

</body>
[/code]

Cara, na verdade o que você quer pegar é isso no seu código?
//String idProjeto = request.getInputStream(“idProjeto”);
Pq vc usou getInputStream?
Eu fiz uma aplicação parecida com essa, e usei desse jeito:
String idProjeto = upload.getParameter(“idProjeto”);
Tenta assim!

Opa, Vinicios Saraiva.

Obrigado pela atençao.
bem, eu já tentei usar o getParameter(“idProjeto”)
porem me retorna Null, isso ocorre pq meu formulario na minha jsp é multipart/form-data.
eu achei algumas soluçoes para isso. mas mesmo assim um pouco complexo, queria se existisse algo mais simples .
as soluçoes que eu encontrei foram essas:

colocar a variavel na queryString qunado chamar o servlet
(eu usei essa) blz funcionou
usei assim:

[/code] <form name=“form1” method=“post” action=“uploadFile?idProjeto=<%=“1”%>” enctype=“multipart/form-data”>
Arquivo:
[code]
onde o numero 1 vai ser substituido por uma variavel int qualquer.

as outras soluçoes :
Solution A:

  1. download http://www.servlets.com/cos/index.html
  2. invoke getParameters() on com.oreilly.servlet.MultipartRequest

Solution B:

  1. download http://jakarta.apache.org/commons/sandbox/fileupload/
  2. invoke readHeaders() in
    org.apache.commons.fileupload.MultipartStream

Solution C:

  1. download http://users.boone.net/wbrameld/multipartformdata/
  2. invoke getParameter on
    com.bigfoot.bugar.servlet.http.MultipartFormData

Solution D:

Use Struts. Struts 1.1 handles this automatically.

acho que vou deixar da forma com querystring mesmo, esta mais simples. pois eu so precisava do idprojeto num campo hidden

mas blz, o codigo de upload de arquivo esta ae funcionando, quem quizer é so pegar,
mt obrigado vinicios abraçao