Etendendo vraptor e uplodad de imagens [RESOLVIDO]

7 respostas
U

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:

<form action="<c:url value="/produtos/${produto.id }/imagem"/>" method="POST" enctype="multipart/form-data">
	<input type="file" name="imagem" />
	<button type="submit">Enviar</button>
</form>

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?

7 Respostas

Lucas_Cavalcanti

vc está com o commons-fileupload no projeto?

ele está em lib/optional/upload do zip do vraptor

U

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?

Lucas_Cavalcanti

geralmente a commons-fileupload e commons-io

mas se vc estiver no tomcat 7 ou jetty 8 ele usa o próprio do container

U

Ah então é isso mesmo, to usando tomcat 7.

Tudo resolvido, valeu pela ajuda! Finalmente terminei o fj28 da caelum.

Lucas_Cavalcanti

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

rafael.quintino

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?

Lucas_Cavalcanti

vc precisa adicionar o commons-fileupload e o commons-io pra habilitar o upload

Criado 22 de janeiro de 2011
Ultima resposta 27 de jan. de 2011
Respostas 7
Participantes 3