Estou tentando fazer o upload de uma imagem vinda de um simples forumlario com nome e arquivo. Este formulário está como DynaForm.
Aparentemente está tudo certo, a não ser pelo fato de os dados do formulário não estarem indo pra dentro do meu Action.
Meu action de teste está assim.
//Verifica se temos uma requisição de FileUpload
boolean isMultipart = FileUpload.isMultipartContent(request);
//Cria um file upload Handlre
DiskFileUpload upload = new DiskFileUpload();
//Cria uma lista de ítens do formulario (FileItems)
List items = upload.parseRequest(request);
//Process the uploaded items
Iterator iter = items.iterator();
String isFormField = "??? Campo Form: ";
String isFileField = "??? Campo File: ";
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {
isFormField = item.getName();
} else {
isFileField = item.getFieldName();
}
}
System.out.print(isFormField + " ???");
System.out.print(isFileField + " ???");
System.out.print("??? items.size() = " + items.size() + " ???");
Simplesmente o items.size está retornando 0 .
Minha Configuração está no struts-config está assim:
<form-beans>
<form-bean name="imageManagementForm"
type="org.apache.struts.validator.DynaValidatorActionForm">
<form-property name="id" type="java.lang.Long"/>
<form-property name="name" type="java.lang.String"/>
<form-property name="file" type="org.apache.struts.upload.CommonsMultipartRequestHandler$CommonsFormFile"/>
</form-bean>
</form-beans>
Alguém tem uma luz pra me dar?
Valeu
e ae,
eu estou tendo o mesmo problema q vc,
ja encontrou alguma soluçao ?
eu consegui recuperar os atributos da pagina usando isto:
CommonsMultipartRequestHandler arquivosFile = (CommonsMultipartRequestHandler) form.getMultipartRequestHandler();
Hashtable todosArquivos = arquivosFile.getFileElements();
o problema eh q agora nao consigo colocar isto no iterator.
tenho uma variavel no tipo
FileItem q recebe o iterator.
eu poderia descartar o iterator e jogar direto no FileItem,
o problema eh q isto tb nao consegui fazer.
se vc tiver algum sucesso me avise!
falow :!:
Cara, pra eu recuperar o arquivo, fiz exatamente isso que você fez, mas os campos textos, eu usei do modo tradicional, ou seja:
DynaActionForm dynaForm = (DynaActionForm) form;
String nome = dynaForm.get("nome");
String desc = dynaForm.get("descricao");
Agora se você quer recuperar o arquivo, você faz o seguinte:
FormFile file = (FormFile)fileMap.get("file");
no meu caso, usei um map ao invés do hashtable. Ah, um detalhe, os arquivos estarão mapeados pelo nome que você colocou no formulário. No meu caso, “file”.
Espero que tenha tirado todas suas dúvidas, qquer coisa, é só perguntar.

e ae cara,
vamo la, o q tu falou foi claro sim…
porem pairou uma duvida no ar!!!
o teu Map fileMap = o q ?
entendeu minha pergunta ? eu nao sei com o q vc valorizou o seu Map
ao criar, para poder dar o get em seguida. :oops:
[]s
Exatamente da mesma maneira que você criou o seu Hashtable.
Só que usei o map ao invés do hash…
Esse é o trecho do meu código
MultipartRequestHandler handler = form.getMultipartRequestHandler();
Map fileMap = handler.getFileElements();
DynaActionForm dynaForm = (DynaActionForm) form;
FormFile file = (FormFile)fileMap.get("file");
Um detalhe que vi agora, eu nao usei CommonsMultipartRequestHandler e sim MultipartRequestHandler. Mas nao tem problema pois o CommonsMultipartRequestHandler implementa o MultipartRequestHandler.
Espero que que tenha ajudado… 
pois eh rapaz,
depois q eu postei a duvida eh q me liguei
q era soh usar o
getFileElements();
hehehe
agora fluiuuu…
valew a força!
Pessoal,
Boa noite.
Usei a mesma definicao do amigo na primeira msg.
O problema eh que para apontar para uma action o form e nao colocar o contexto da aplicacao no action, tive de colocar em um form com tags do Struts do tipo <html:form> e etc.
Sendo assim tive de associar um FormBean a action porem qdo chego dentro da Action do Struts e dou o comando parseRequest e pego o iterator o mesmo vem vazio sempre. Alguem sabe o porque?
Qdo usei o mesmo codigo no JSP com Servlet funcinou na boa. Ou entao qdo eu chamo a action do struts direto de um form html normal sem tags do struts, ou seja sem associar a um formBean, ele funciona na boa. Tem algum problema em relacao ao FormBean.
Alguem jah leu algo sobre?
Qual solucao devo adotar usando Struts? Ah do amigo que pega os elementos com getFileElements?
Aguardo a ajuda de vcs amigos…
Abracos,
Ricardo
PS: Desculpe a falta de acentuacao… Meu teclado eh alemao!