Oi, to com um erro no upload de imagens, e para resolver preciso entender o processo.
primeiro o usuário tá tendo esse form pra ele:
[code]
" method="POST" enctype="multipart/form-data">
Enviar
[/code]
a lógica desse form é:
@Post @Path("/produtos/{produto.id}/imagem")
public void upload(Produto produto, final UploadedFile imagem) {
if(imagem == null) {
System.out.println("Imagem está nula");
}
}
O problema é que imagem tá vindo nula!
O que pode fazer imagem vir nula? No form o usuário escolhe uma imagem do disco e clica em enviar, mas na lógica não tá vindo nenhuma imagem.
Então. alguém vê algum erro nos códigos mostrados?
vc está com o commons-fileupload no projeto?
ele está em lib/optional/upload do zip do vraptor
Lucas, seguinte: o commons-fileupload tá no projeto sim, porém com certeza é problema de alguma lib faltando, sobrando ou errada. Eu estou com dois projetos aqui, o original com as libs que eu coloquei, e um que peguei na net com outras libs. o da net funciona, mas o meu não. Fiz um merge entre as e tá tudo funcionando, porém não deu pra perceber qual lib.
Você deve ser bem mais experiente, qual lib afeta o upload? pode ser qualquer uma né pra tá chegando um objeto nulo?
geralmente a commons-fileupload e commons-io
mas se vc estiver no tomcat 7 ou jetty 8 ele usa o próprio do container
Ah então é isso mesmo, to usando tomcat 7.
Tudo resolvido, valeu pela ajuda! Finalmente terminei o fj28 da caelum.
o tomcat 7 ainda não suporta o servlet upload corretamente, por isso não funciona com o vraptor… mas na próxima versão do VRaptor ele dará preferência pelo commons-fileupload daí funcionaria normal.
no último snapshot isso já funciona:
http://oss.sonatype.org/content/repositories/snapshots/br/com/caelum/vraptor/3.2.1-SNAPSHOT/vraptor-3.2.1-20110118.221013-11.jar
Estou tendo o mesmo problema, mas não tenho idéia de como eu posso atualizar a versão do Vraptor que está no meu projeto para esta 3.2.0-SNAPSHOT.
Estou usando a versão 3.2.1 do Vraptor com o Maven. Creio que no repositório ainda não temos disponível esta nova versão.
O que posso fazer para resolver este problema de o UploadedFile estar vindo quase sempre null
no Controller?
vc precisa adicionar o commons-fileupload e o commons-io pra habilitar o upload