Capturando valores e arquivos de um formulário JSP

7 respostas
D

Seguinte,

Tenho um formulário com essa definição de form:

<form method="post" name="formUsuario" onSubmit="enviar(); return false;" enctype="enctype="multipart/form-data"">

E nesse formulário, além de eu ter o campo para carregar a foto eu também tenho vários campos para cadastrar dados do usuário.
Só que não estou conseguindo pegar nenhum valor dos campos preenchidos do formulário pela minha servlet. Acredito que seja por causa do enctype, eu preciso pegar tanto o arquivo quanto os campos.

Alguém pode me ajudar? :shock:

7 Respostas

javaBeats

Sure =D

Use o Apache Commons File Upload… tem exemplos bem simples lá de como você faria o que precisa.

Claro, você pode fazer seu próprio código de processamento de um formulário multipart… mas pra quê reinventar a roda? =D

Ah, e o enctype está declarado errado… é só “enctype=“multipart/form-data””, simples assim, sem as aspas extras que eu coloquei aqui =D

Rodrigo

D

Então javaBeats…
eu estou utilizando o fileupload do commons, e o enctype está correto também, o problema é que quando uso esse enctype não consigo capturar outros valores do mesmo formulário como nome, login e outros campos.

Alguém sabe como posso resolver isso?

javaBeats
boolean isMultipart = FileUpload.isMultipartContent(request);

   if (isMultipart) {

      DiskFileUpload upload = new DiskFileUpload();
      
      upload.setSizeMax(50*1024*1024); //50Mb
      upload.setRepositoryPath("c:/temp");
      
      List items = upload.parseRequest(request);
      
      Iterator it = items.iterator();
      while (it.hasNext()) {
         FileItem fitem = (FileItem) it.next();
             if (!fitem.isFormField()) {
                 // eh um arquivo
             } else {
                 // eh um campo comum
             }
         }
      }
   }
D

Muito boa…funcionou…
mas eu consigo o nome dos campos com o

fi.getFieldName()

como faço pra pegar o valor do campo?

V

Creio que isso ja vai resolver seu problema de upload !

UploadBean upBean = new UploadBean();
try{
upBean.setFolderstore(application.getRealPath(dirArquivos)); //pasta no servidor onde sera salvo	
		
		
 upBean.setWhitelist("*.txt");// extensoes permitidas
  upBean.setFilesizelimit(1*1024*512);//tamanho do arquivo em bytes
  upBean.setOverwrite(true);

	if (MultipartFormDataRequest.isMultipartFormData(request)) {
 		MultipartFormDataRequest mrequest = new MultipartFormDataRequest(request);

		if (mrequest != null) {

			Hashtable files = mrequest.getFiles();
			if ((files != null) && (!files.isEmpty())) {
                
				UploadFile file = (UploadFile) files.get("arquivo");
			
                     
				if (file != null) {			
					upBean.store(mrequest, "arquivo");
					Vector history = upBean.getHistory();
						for (int i=0;i<history.size();i++){
			  			UploadParameters up = (UploadParameters) history.elementAt(i);
			  		    session.setAttribute("PathServer",dirArquivos + up.getFilename());%>
                        <!-- <%=up.getStoreinfo()%> -->
                        <%
               }
          } else 
       }else 
     }else 
   }
} catch(UploadException ue){
 } catch(Exception e){
  }
}

Tem algumas variaveis q eu nao declarei mais acho q vai te ajudar …

[]'s

D

Vou tentar assim que tiver o resultado aviso!

D

Valeu cara…
perfeito!

Criado 12 de abril de 2006
Ultima resposta 13 de abr. de 2006
Respostas 7
Participantes 3