Upload no VRaptor

Pessoal,

Estou com um problema ao fazer upload de arquivos usando o vraptor, recebo o parâmetro como null, pesquisei em vários tópicos, mas não entendi ainda o porque de vir vazio e como resolver.

Poderiam me dar um help?

Perfil Controller

public void upload(UploadedFile file){ String diretorioUpload = "/Users/edsonmartins/Documents/SSP/"; File destinoArquivo = new File(diretorioUpload, file.getFileName()); try { IOUtils.copyLarge(file.getFile(), new FileOutputStream(destinoArquivo)); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }

Index.jsp

[code]<form action="<c:url value="/perfil/upload" />" method=“post” enctype=“multipart/form-data”>

[/code]

Recebo meu file como null. No Log recebo:

14:13:08,608 INFO [CommonsUploadMultipartInterceptor] Request contains multipart data. Try to parse with commons-upload.
14:13:08,699 WARN [UploadedFileConverter] There was an error when uploading the file {}. Please verify if commons-fileupload jars are in your classpath or you are using a Servlet 3 Container.

Mas já tenho a lib adicionada no classpath.

Obrigado,
Edson

a lib está no WEB-INF/lib? ou só no classpath?

Está em ambos.

Alan,

Se está em ambos, no classpath do projeto e na pasta lib da aplicação web. Vc deve remover uma das 2 configurações, pois desta forma irá gerar duplicidade da classe no classpath e a JVM não irá carregar as classes deste jar.

A sugestão é você deixar somente na pasta WEB-INF/lib.

Lucas,

Consegui da seguinte forma, alterando o name no index, removendo o perfil.file deixando apenas file. O nome do parâmetro no controller deve ser o mesmo que passado na index, deixando o perfil. já não funcionam fiz alguns outros formulários sem ser de upload e usava sempre o nome do controller antes do nome do campo.

Qual é a regra? Obrigado.

vc está com o iogi no classpath, certo?

pode ser relacionado a essa issue:

crie esse arquivo: