Pegando atributos com multipart/form-data

19 respostas
Guto_Magalhaes

Galera, tenho o seguinte form em html pra fazer upload de arquivos:




Agora, queria saber como faço pra pegar o nome do arquivo em uma Servlet, ja que request.getAtribute(“caminhoFoto”) me traz null. Tem como pegar o atributo?

Obrigado.

19 Respostas

Maek

Essa action UploadsFotos é um servlet??
Se sim, tem como pegar nesse servlet…

Guto_Magalhaes

Sim, é um servlet. Mas como eu pegaria no servlet?

Maek

Vê se chega assim lá no servlet:

String caminhoFoto = request.getParameter("caminhoFoto");
Guto_Magalhaes

Mas é exatamente dessa forma que nao funciona, por causa do enc = multpart/form-data no html. Sem essa linha no html, ele nao funciona, mas se eu colocar ela, ai o request.getParameter me traz null. Algue sabe como eu faço pra resolver isso?

Obrigado.

Maek

Hmm… Intaum num sei se te ajudarei… Mas vai ai uma dica… Qndo o cara clikar em submit, dispara uma function em JS e grava o valor num campo hidden do tipo TEXT, dai eu acho que vc conseguira pegar como getatribute ou getparameter no modo multpart láá no servlet, pq pelo visto o servlet num ta enxergando o campo do tipo file…

Guto_Magalhaes

Não deu certo =/
Ele tb nao ve campo hidden nem text

Maek

Qual seria a finalidade de vc guardar o caminho do arquivo do pc do cliente :?: :?: :?:
de uma olhada aki:
http://www.guj.com.br/posts/list/36444.java#193326

H

Com o form marcado como multipar, o buraco é mais em baixo. :smiley:

Vê se te ajuda.

private FileUpload fileUpload;

this.fileUpload = new FileUpload(request);

HashMap m = fileUpload.getMimeParts();

if(m.get("caminhoFoto") == null)
	return null;
else{
	MimeBodyPart part = (MimeBodyPart)m.get(nomeControle);
	return part.getDataAsString();
}

[]'s

Guto_Magalhaes

Este FileUpload que vc utilizou é uma biblioteca ou uma classe criada por vc?

Maek

‘Deve’ ser isso:

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FilenameUtils;

Jackarta FileUploads… ‘creio’ que deve ser…

H

Que “servicinho” eu fiz hein??? rsrsr

Na verdade são:

import com.blogspot.pontoflutuante.FileUpload;
import com.blogspot.pontoflutuante.MimeBodyPart;

Vc baixa em:
http://sourceforge.net/project/showfiles.php?group_id=43100&package_id=35371&release_id=234420

Desculpe a vergonha que eu passei.

Maek

hudson.paula:
Que “servicinho” eu fiz hein??? rsrsr

Na verdade são:

import com.blogspot.pontoflutuante.FileUpload;
import com.blogspot.pontoflutuante.MimeBodyPart;

Vc baixa em:
http://sourceforge.net/project/showfiles.php?group_id=43100&package_id=35371&release_id=234420

Desculpe a vergonha que eu passei.

kkk Q nada…

Mando bem!!

Guto_Magalhaes

De boa

Guto_Magalhaes

Na linha

MimeBodyPart part = (MimeBodyPart)m.get(nomeControle);

O que viria ser nomeControle?

H

nomeControle é o nome do campo (controle) na tela.

No seu caso, vc vai passar “caminhoFoto”.

De forma resumida Guto, tudo que antes vc obtinha via .getParameter() agora vc obtém assim.
Acessando um campo do Hashmap.

[]'s.

Guto_Magalhaes

Então, dessa forma ele tb ta vindo null. É muito estranho.

furutani

Não tão simples assim obter o valor de campo que está em um form multipart/form-data.

Fonte: http://www.jguru.com/faq/view.jsp?EID=1045507

Guto_Magalhaes

Deu certo, usei o apache file upload ^^

MarcolaLipe10

Guto_Magalhaes

O que você usou ???
Poem o seu controle e sua JSP , para qm ainda tiver essa duvida conseguir tirar :smiley:

Criado 2 de janeiro de 2009
Ultima resposta 11 de jul. de 2013
Respostas 19
Participantes 5