Vraptor - Upload

92 respostas
yorgan

Blza pessoal,
Continuando os testes que estou fazendo no VRaptor, cheguei na parte de Upload.
Estou testando o seguinte código, mas o UploadedFile está vindo sempre nulo.

Controller:

import javax.servlet.http.HttpServletRequest;

import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.interceptor.multipart.UploadedFile;

@Resource
public class IndexController {
	
        private HttpServletRequest request;
	
	public IndexController(HttpServletRequest request) {
		this.request = request;
	}

	@Path("/")
	public void index() {
		
	}
	
	public void upload(UploadedFile arquivo) {
		if(arquivo == null) {
			System.out.println("Erro upload");
		}
	}

}

JSP:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title></title>
</head>
<body>
	<form action="<c:url value="/index/upload"/>" method="post">
		<input type="file" name="arquivo" /> <br />
		<input type="submit" value="Salvar" />
	</form>
</body>
</html>

O que estou fazendo errado?

[]´s

Daniel

92 Respostas

G

Sempre que você envia arquivos, o formato do request é diferente. Para isso você precisa enviar o form diferente também indicando o parametro enctype=“multpart/form-data”.

yorgan

Valeu Garcia, mas mesmo utilizando a declaração do form que você passou o sistema continua não enviando o arquivo.

[]´s

Lucas_Cavalcanti

faltou um “i”:
enctype=“multipart/form-data”

G

lucascs:
faltou um “i”:
enctype=“multipart/form-data”

:oops: oops

yorgan

Fiz o ajuste na declaração e continua vindo null.

yorgan

Agora disparou um HTTP500…
Em qual JAR tem classe DeferredFileOutputStream?

Segue o erro:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Filter execution threw an exception

root cause

java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream
	org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:196)
	org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:358)
	org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
	br.com.caelum.vraptor.interceptor.multipart.MultipartInterceptor.intercept(MultipartInterceptor.java:84)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
	br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
	br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:62)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:55)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)

root cause

java.lang.ClassNotFoundException: org.apache.commons.io.output.DeferredFileOutputStream
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
	java.lang.ClassLoader.loadClassInternal(Unknown Source)
	org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:196)
	org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:358)
	org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
	br.com.caelum.vraptor.interceptor.multipart.MultipartInterceptor.intercept(MultipartInterceptor.java:84)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
	br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
	br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:62)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:55)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)
Lucas_Cavalcanti

testei aqui com esse form e funcionou:

<body>
	<form action="<c:url value="/index/upload"/>" enctype="multipart/form-data" method="post">
		<input type="file" name="arquivo" /> <br />
		<input type="submit" value="Salvar" />
	</form>
</body>
</html>

será que seu browser não está fazendo cache da página? ve no codigo fonte se o form tá direitinho…

[]'s

G

Commons IO

org/apache/commons/io/output/DeferredFileOutputStream

Lucas_Cavalcanti

tá no commons-io-1.3.2.jar
esse jar está em lib/optional no zip do vraptor ou vc pode baixar no site oficial http://commons.apache.org/io/

yorgan

Opa, agora funcionou.
O estranho é que o erro só disparou depois que eu adicionei mais um Objeto para ser passado no form.
Agora está assim:

<form action="<c:url value="/index/upload"/>" enctype="multipart/form-data" method="post">
		<input type="file" name="arquivo" /> <br />
		<input type="text" name="contato.nome" />
		<input type="submit" value="Salvar" />
	</form>
public void upload(Contato contato, UploadedFile arquivo) {
		if(arquivo == null) {
			System.out.println("Erro upload");
		}
		if(contato != null) {
			System.out.println(contato.getNome());
		}
	}

Pessoal, valeu pela ajuda.

[]´s

Daniel

G

lucascs:
tá no commons-io-1.3.2.jar
esse jar está em lib/optional no zip do vraptor ou vc pode baixar no site oficial http://commons.apache.org/io/

Lucas, eu não sou muito fã desses projetos jakarta-commons-*, uso porque realmente é melhor do que fazer na mão. E pesquisando aqui e alí achei um projeto do google que nem beta é, o Guava, mas nos testes que eu fiz com I/O está super bom. Dê uma olhada, quem sabe em um futuro próximo possa ser útil. Lá diz que possívelmente irá juntar-se ao google collections.

Analisando os pacotes me pareceu um merge com commons-io, commons-lang. Se juntarem os projetos, espero que pelo menos não chamem mais de google-collections.

Lucas_Cavalcanti

Legal, vou dar uma olhada =)

Lucas_Cavalcanti

parece legal o projeto…

mas a dependência do commons-io não eh do VRaptor, é do commons-fileupload… então infelizmente não dá pra trocar =(

G

Legal mesmo, gostei muito do que já está implementado e também do roadmap para quando o projeto decolar. Mas te passei o link apenas para você conhecer, pois nem é bom usar essas coisas em versão que-nem-chegaram-a-beta, hehe.

Corrigindo, lí correndo e ainda lí errado. Lá diz que por enquanto há pedaços dele no g-gollections e vice-versa, mas que logo irão regularizar isso.

Abraços

G

Olá pessoal!

Continuo com uma dúvida em relação a esse assunto. Esse método vai receber um UploadedFile, um arquivo que eu posso manipular, isso? E se eu quiser salvá-lo como se fosse a foto do cadastro de um perfil? Tipo gostaria se salvar no banco essa imagem e já recarregá-la na tela vinda do banco.

Agradeço pela atenção,

Gustavo

Lucas_Cavalcanti

O arquivo vai vir como um InputStream…

o VRaptor já possui como dependência o commons-io, que tem um utilitário pra fazer esse tipo de cópia:

UploadedFile upload = //vai vir da requisição
File destino = new File("/onde/eu/vou/salvar");
IOUtils.copyLarge(upload.getFile(), new PrintWriter(destino));
G

Beleza, isso eu entendi.

Mas e se eu quiser salvar essa imagem em um local que eu possa mostrar depois no browser…
Eu estou usando Vraptor 3 e eu não sei como dizer o caminho onde salvar, para que depois eu consiga mostrar em um tag .

Valeu pela força,

Guto

Lucas_Cavalcanti

vc pode receber um RequestInfo no construtor da sua classe e fazer no seu controlador do Upload:

ImagensController(RequestInfo info) {
   String realPath = info.getServletContext().getRealPath("/web/imagens");
   this.imagensDir = new File(realPath);
}

e na lógica do upload:

UploadedFile upload = // vem da requisição:
File destino = new File(imagensDir, "algumNomeUnico.jpg");
IOUtils.copyLarge(upload.getFile(), new PrintWriter(destino));

e é só usar nas jsps essa imagens como vc falou…

[]'s

M

Boa Noite,

Tentei seguir a lógica do codigo abaixo, a fim de gerar um método para realizar o upload de arquivos.

No entanto, a função IOUtils.copyLarge parece não ser compátivel com o objeto PrintWriter

Estou utilizando o vraptor3
Segue abaixo o código do metodo.

@Path("/upload/file/")
	public void uploadFile(UploadedFile arquivo) {
			if(arquivo == null) {
				System.out.println("Erro upload");
			}
			else
			{
				File destino = new File("c:\\repositorio\\teste1.txt");
				try {
//The method copyLarge(InputStream, OutputStream) in the type IOUtils is not applicable 
// for the arguments (InputStream, PrintWriter)

					IOUtils.copyLarge(arquivo.getFile(), new PrintWriter(destino));
				} catch (IOException e) {
					e.printStackTrace();
					System.out.println("Upload NOK");
				}
			}
	}

Quando uso o método IOUtils.copy, em vez de IOUtils.copyLarge, o arquivo é copiado com zero bytes.

Alguma sugestão?

Obrigado.

Lucas_Cavalcanti

troca o new PrintWriter(destino) por new FileOutputStream(destino)

M

Funcionou.

Seguindo sua idéia meu metodo ficou assim:

if(arquivo == null) {
				System.out.println("Erro upload");
			}
			else
			{	File destino = new File("c:\\repositorio\\"+arquivo.getFileName());
				destino.createNewFile();
				InputStream stream = arquivo.getFile();
				IOUtils.copy(stream,new FileOutputStream(destino));
				System.out.println("Upload Finish");
			}
			result.include("variable",arquivo.getFileName());

Obrigado pela ajuda.

A

Lucas Cavalcanti ,

AJUDOU MAIS UM ! :smiley:

Eu estava com problemas para transferencia com os exemplos nas documentacoes do Vraptor

public void upload(UploadedFile arquivo){
		String diretorioUpload = "C:\\@UploadsVraptor";
		File destinoArquivo = new File(diretorioUpload, arquivo.getFileName());
		try {
			IOUtils.copy(arquivo.getFile(), new PrintWriter(destinoArquivo));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		result.redirectTo(IndexController.class).index();
	}

IOUtils.copy(arquivo.getFile(), new PrintWriter(destinoArquivo));
Troquei o trecho em negrito pelo trecho abaixo, como você sugeriu, e funcionou PERFEITAMENTE.

Solicito revisão nas documentações e testes nos codigos documentados.

Obrigado!

Lucas_Cavalcanti

já corrigi na documentação… mais algum erro que vc tenha percebido?

Valeu =)

G

:shock: Só faltou dar duas chibatadas :shock:

A

Garcia, nao quis se grosso nao!

É que eu conheco a galera desde 2004, então, tem aquela intimidade…rs

G

Alexandre Ferreira:
Garcia, nao quis se grosso nao!

É que eu conheco a galera desde 2004, então, tem aquela intimidade…rs

Ahh, mas então desculpe-me :smiley: :smiley:

Guevara

Aqui a imagem não está indo para a minha pasta fotos, vejam o erro:

exception

javax.servlet.ServletException: Filter execution threw an exception

root cause

java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream
	org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:196)
	org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:358)
	org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
	br.com.caelum.vraptor.interceptor.multipart.MultipartInterceptor.intercept(MultipartInterceptor.java:84)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
	br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:62)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:55)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)

root cause

java.lang.ClassNotFoundException: org.apache.commons.io.output.DeferredFileOutputStream
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
	java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
	org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:196)
	org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:358)
	org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
	br.com.caelum.vraptor.interceptor.multipart.MultipartInterceptor.intercept(MultipartInterceptor.java:84)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
	br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:62)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:55)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)

Meu método de upload que está na classe FilmeController:

public void upload(UploadedFile arquivo){  
		           String diretorioUpload = "/home/bruno/fotos";  
		           File destinoArquivo = new File(diretorioUpload, arquivo.getFileName());  
		           try {  
		        	 IOUtils.copyLarge(arquivo.getFile(), new FileOutputStream(destinoArquivo));   
		            } catch (FileNotFoundException e) {  
		                e.printStackTrace();  
		           } catch (IOException e) {  
		                e.printStackTrace();  
		          }  
		          result.redirectTo(FilmeController.class).lista();  
		       }

Na JSP o form está assim:

<form action="<c:url value="filme/upload"/>" enctype="multipart/form-data"  method="post">  
              <input type="file" name="arquivo" /> <br />
              <input type="submit" name="submit" value="Enviar" />           
</form>

Criei uma pasta fotos na minha Home, não está certo?

Valeu!

G

Tudo fica mais claro quando você lê a mensagem de erro ao invés de tentar adivinhar qual a solução.

Note que em sua mensagem há uma mensagem de classe não encontrada: NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream

Basta você adicionar o jar do commons-upload que está no diretório de libs do vraptor.

Abraços

Lucas_Cavalcanti

nesse caso é a commons-io: org/apache/commons/io/

G

oops :oops:

Guevara

Obrigado pelo alerta! =)
Consegui mandar a imagem numa boa.
Abraço!

Guevara

Desculpem subir o tópico, mas não estou conseguindo salvar o caminho da imagem no banco para depois obtê-la e mostrá-la na jsp.
Eu sei o que quero fazer, mas não sei como.

Tenho minha classe modelo Filme:

//outros métodos
private String urlImagem;

public String getUrlImagem() {
		return urlImagem;
	}
	public void setUrlImagem(String urlImagem) {
		this.urlImagem = urlImagem;
	}
//outros getters e setters

No meu controller adicionei a parte de upload junto com o método adiciona:

public void adiciona(final Filme filme, UploadedFile arquivo) {  
		
		String diretorioUpload = "/home/bruno/fotos";  
        File destinoArquivo = new File(diretorioUpload, arquivo.getFileName()); 
        try {  
       	 IOUtils.copyLarge(arquivo.getFile(), new FileOutputStream(destinoArquivo));   
         } catch (FileNotFoundException e) {  
              e.printStackTrace();  
         } catch (IOException e) {  
              e.printStackTrace();  
         }  
//gravando o Filme no banco
	    filmeDao.adiciona(filme);  
	    //Retornando mensagem de sucesso na inclusão
	    result.include("mensagem", "Filme adicionado com sucesso");	    
	    //redirecionamento para a lista após a inclusao
	    result.use(Results.logic()).redirectTo(FilmeController.class).lista();

No formulário JSP está assim:

<form id="" class="" action="filme/adiciona" method="post" enctype="multipart/form-data" >

//outros campos

<li><input type="file" name="arquivo" /></li>   
<input type="submit" name="submit" value="Enviar" />

Beleza, a imagem vai para a pasta alvo, mas como faço para que no formulário o usuário possa alterar o nome da imagem e que ao enviar fique com a ID do filme?
Pq dessa forma, com a ID do filme, poderia mostrar o filme na tabela junto com sua imagem ou imagens no caso de uma galeria.
Tava pensando em criar uma tabela no banco e uma classe chamadas Imagem, só para armazenar isso, pois se eu quiser criar uma galeria de imagens, seriam várias imagens para um Filme, relacionamento de um para muitos (1.*), um filme com várias imagens, e uma imagem que pertence a um filme.
obs: a ID do filme é autoincremento no banco.

Alguém poderia me ajudar?

Abraço!!

Lucas_Cavalcanti

vc quer dar um nome pra foto só?

acho que criar uma entidade Imagem com nome e caminho real é o suficiente… daí qdo vc salvar, vc salva baseado em um ID auto increment, mas o usuário pode dar o nome que quiser…

daí um filme tem uma ou mais imagens, dependendo do que fizer sentido

Guevara

Oi lucas!

Obrigado pela dica, mas baixei a apostila mais nova do curso FJ-28 e lá têm a parte de download e upload. Estou seguindo os passos e esbarrei com dois métodos que não existem:

public void upload(Imovel imovel, final UploadedFile imagem) {
	    validator.checking(new Validations() {{
	        if (that(imagem, is(notNullValue()), "imagem", "imagem.nula")) {
	            that(imagem.getContentType(), startsWith("image"), "imagem", "nao.eh.imagem");
	        }
	    }});
	    validator.onErrorUse(Results.page()).of(ImovelController.class).edita(imovel.getIdImovel());
	    imagens.salva(imagem, imovel);
	    result.redirectTo(ImovelController.class).edita(imovel.getIdImovel());
	}

Um é o notNullValue() e o outro o startsWith(“image”).
Estou na página 125 da apostila.

Sabe qual é o método correto para essa validação de imagens?

Abraço!

Lucas_Cavalcanti

isso vem de um import estático em org.hamcrest.Matchers.* ou é só um código de exemplo, só pra ilustrar que dá pra fazer isso…

Guevara

Beleza, parece que esse não é o problema mais urgente, pq a imagem não está subindo =/ , e eu tb não entendi esta anotação:

Na classe ImagensController

@Post
@Path("/imovel/{imovel.idImovel}/imagem")
	public void upload(Imovel imovel, final UploadedFile imagem) {

Na classe Imagens:

@Component
public class Imagens {

	private File pastaImagens;

	public Imagens(ServletContext context) {
		String caminhoImagens = context.getRealPath("/home/bruno/fotos");
		pastaImagens = new File(caminhoImagens);
		pastaImagens.mkdir();
	}

Que Path é este aqui?

@Path("/imovel/{imovel.idImovel}/imagem")

Já defini que seria pasta “fotos”, não entendi esse caminho ai… =/

Lucas_Cavalcanti
@Path("/imovel/{imovel.idImovel}/imagem")

isso significa que vc vai acessar a lógica upload por uma URL parecida com:

http://localhost:8080/contextoDaApp/imovel/34/imagem

e a imagem seria salva no imovel de id 34

Guevara

Entendi, o estranho é que tô preenchendo o form, adicionando a imagem e não aparece nada na pasta “fotos”, e no console devolve erro:

00:23:40,716 DEBUG [MultipartItemsProcessor] Uploaded file: imagem with [uploadedFile uploadedCompleteName=252(8).jpg uploadedName=252(8).jpg contentType=image/jpeg]

00:23:40,794 DEBUG [OgnlParametersProvider] Applying imagem with [252(8).jpg]
00:23:40,795 DEBUG [OgnlParametersProvider] cant find property for expression imagem ignoring

00:30:25,696 DEBUG [DefaultResourceTranslator] trying to access /imovel/60/imagem
00:30:25,696 DEBUG [VRaptor             ] VRaptor ended the request

Não está achando no form o parâmetro “imagem”:

<form id="" class="" action="imovel/adiciona" method="post" <c:url value="/imovel/${imovel.idImovel }/imagem"/> enctype="multipart/form-data" >

//outros campos

<input type="file" name="imagem" />
<input type="submit" name="submit" value="Enviar" />

Estranho não? O.o

Guevara

Fiz algumas correções, a JSP de listar quase mostra as imagens, só ameaça e some, e no console mostra esta saida de erro:

01:22:43,534 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExecuteMethodInterceptor
01:22:43,534 DEBUG [ExecuteMethodInterceptor] Invoking ImagensController.download(Imovel)
01:22:43,539 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor OutjectResult
01:22:43,539 DEBUG [OutjectResult       ] outjecting file=/home/bruno/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/Imobiliaria/home/bruno/fotos/50.imagem
01:22:43,542 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor DownloadInterceptor
01:22:43,543 DEBUG [DownloadInterceptor ] Sending a file to the client
05/04/2010 01:22:43 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet default threw exception
br.com.caelum.vraptor.InterceptionException: java.lang.IllegalArgumentException: java.io.FileNotFoundException: /home/bruno/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/Imobiliaria/home/bruno/fotos/50.imagem (No such file or directory)
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:77)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:77)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
	at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.imobiliaria.interceptor.LoginFuncionarioInterceptor.intercept(LoginFuncionarioInterceptor.java:31)
	at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.IllegalArgumentException: java.io.FileNotFoundException: /home/bruno/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/Imobiliaria/home/bruno/fotos/50.imagem (No such file or directory)
	at br.com.caelum.vraptor.interceptor.download.FileDownload.<init>(FileDownload.java:45)
	at br.com.caelum.vraptor.interceptor.download.FileDownload.<init>(FileDownload.java:37)
	at br.com.caelum.vraptor.interceptor.download.DownloadInterceptor.intercept(DownloadInterceptor.java:85)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.OutjectResult.intercept(OutjectResult.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:75)
	... 40 more
Caused by: java.io.FileNotFoundException: /home/bruno/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/Imobiliaria/home/bruno/fotos/50.imagem (No such file or directory)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(FileInputStream.java:106)
	at br.com.caelum.vraptor.interceptor.download.FileDownload.<init>(FileDownload.java:42)
	... 48 more
Lucas_Cavalcanti

o problema é que:

context.getRealPath("/home/bruno/fotos");

pega o path a partir da pasta em que a sua aplicação foi deployada… no caso de subir no tomcat do eclipse:

/home/bruno/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/Imobiliaria/home/bruno/fotos/50.imagem

se quiser salvar no /home/bruno/fotos mesmo, é só fazer:

File pastaFotos = new File("/home/bruno/fotos");
Guevara

E ai Lucas!
Tá osso aqui, tentei de td quanto é forma mas a imagem não sobe e nem desce.

@Component
public class Imagens {

	private File pastaImagens;

	public Imagens(ServletContext context) {
		 
		String pastaImagens = context.getRealPath("/home/bruno/fotos");
		File destino = new File(pastaImagens);
		destino.mkdir();
	}

	public void salva(UploadedFile imagem, Imovel imovel) {		
	     File destinoArquivo = new File(pastaImagens, imovel.getIdImovel() + ".imagem");    
	     try {    
		      IOUtils.copyLarge(imagem.getFile(), new FileOutputStream(destinoArquivo));     
		     } catch (FileNotFoundException e) {    
		       e.printStackTrace();    
		     } catch (IOException e) {    
		    	 throw new RuntimeException("Erro ao copiar imagem", e);
		     }    		
	}

Valeu!!!

Lucas_Cavalcanti

troca a linha 8 por:

this.pastaImagens = new File("/home/bruno/fotos");
Guevara

Ainda não deu boa:

23:11:44,496 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor MultipartInterceptor
23:11:44,496 DEBUG [MultipartInterceptor] Trying to parse multipart request.
23:11:44,502 DEBUG [MultipartInterceptor] Using repository [/tmp] for file upload
23:11:44,545 DEBUG [MultipartInterceptor] Found [14] attributes in the multipart form submission. Parsing them.
23:11:44,571 DEBUG [VRaptorRequest      ] Setting imagem with [252(1).jpg]
23:11:44,572 DEBUG [MultipartItemsProcessor] Uploaded file: imagem with [uploadedFile uploadedCompleteName=252(1).jpg uploadedName=252(1).jpg contentType=image/jpeg]

E mais embaixo o erro:

23:11:45,519 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ParametersInstantiatorInterceptor
23:11:45,520 DEBUG [AsmBasedTypeCreator ] Trying to make class for ImagensController$download$836896861$8
23:11:45,520 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for ImagensController.download(Imovel) as [imovel]
23:11:45,520 DEBUG [AsmBasedTypeCreator ] Parameter names found for creating type are: [Imovel]
23:11:45,520 DEBUG [AsmBasedTypeCreator ] Method for field 'Imovel' being defined for type Lbr/com/imobiliaria/model/Imovel;
23:11:45,521 DEBUG [AsmBasedTypeCreator ] Methods: [public void ImagensController$download$836896861$8.setImovel(br.com.imobiliaria.model.Imovel), public br.com.imobiliaria.model.Imovel ImagensController$download$836896861$8.getImovel()]
23:11:45,521 DEBUG [AsmBasedTypeCreator ] Fields: [private br.com.imobiliaria.model.Imovel ImagensController$download$836896861$8.Imovel_]
23:11:45,521 DEBUG [CacheBasedTypeCreator] cached generic type for method [DefaultResourceMethod: ImagensController.downloadImagensController.download(Imovel)]
23:11:45,521 DEBUG [OgnlParametersProvider] Applying imovel.idImovel with [200]
23:11:45,531 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for ImagensController.download(Imovel) as [imovel]
23:11:45,531 DEBUG [ParametersInstantiatorInterceptor] Parameter values for [DefaultResourceMethod: ImagensController.downloadImagensController.download(Imovel)] are [br.com.imobiliaria.model.Imovel@a0c73f]
23:11:45,546 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExecuteMethodInterceptor
23:11:45,546 DEBUG [ExecuteMethodInterceptor] Invoking ImagensController.download(Imovel)
23:11:45,549 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor OutjectResult
23:11:45,549 DEBUG [OutjectResult       ] outjecting file=/home/bruno/fotos/200.imagem
23:11:45,553 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor DownloadInterceptor
23:11:45,554 DEBUG [DownloadInterceptor ] Sending a file to the client
05/04/2010 23:11:45 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet default threw exception
br.com.caelum.vraptor.InterceptionException: java.lang.IllegalArgumentException: java.io.FileNotFoundException: /home/bruno/fotos/200.imagem (No such file or directory)
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:77)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:77)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
	at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.imobiliaria.interceptor.LoginFuncionarioInterceptor.intercept(LoginFuncionarioInterceptor.java:31)
	at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.IllegalArgumentException: java.io.FileNotFoundException: /home/bruno/fotos/200.imagem (No such file or directory)
	at br.com.caelum.vraptor.interceptor.download.FileDownload.<init>(FileDownload.java:45)
	at br.com.caelum.vraptor.interceptor.download.FileDownload.<init>(FileDownload.java:37)
	at br.com.caelum.vraptor.interceptor.download.DownloadInterceptor.intercept(DownloadInterceptor.java:85)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.OutjectResult.intercept(OutjectResult.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:75)
	... 40 more
Caused by: java.io.FileNotFoundException: /home/bruno/fotos/200.imagem (No such file or directory)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(FileInputStream.java:106)
	at br.com.caelum.vraptor.interceptor.download.FileDownload.<init>(FileDownload.java:42)
	... 48 more

Nesta linha ele deveria ter upado a imagem, mas não têm nada na pasta:

23:11:45,549 DEBUG [OutjectResult       ] outjecting file=/home/bruno/fotos/200.imagem

E este erro mostra que não achou a imagem, parece que está tentando acessar, só faltaria upar.

br.com.caelum.vraptor.InterceptionException: java.lang.IllegalArgumentException: java.io.FileNotFoundException: /home/bruno/fotos/200.imagem (No such file or directory)
Lucas_Cavalcanti

essa imagem existe? ela foi salva nesse caminho fisicamente?

Guevara

Ela não foi salva, a pasta continua vazia, tentei desta forma e tb não foi:

<input type="file" name="upload" />  
<input type="submit" name="submit" value="Enviar" />

Método salva() da classe componente Imagens.

public void salva(UploadedFile imagem, Imovel imovel) {		
		 String pastaImagens = "/home/bruno/fotos";    
	     File destinoArquivo = new File(pastaImagens, imovel.getIdImovel() + ".imagem");    
	     try {    
		      IOUtils.copyLarge(imagem.getFile(), new FileOutputStream(destinoArquivo));     
		     } catch (FileNotFoundException e) {    
		       e.printStackTrace();    
		     } catch (IOException e) {    
		    	 throw new RuntimeException("Erro ao copiar imagem", e);
		     }    		
}

Método upload() da classe ImagensController.

public void upload(Imovel imovel, final UploadedFile imagem) {	    
	    imagens.salva(imagem, imovel);	
	}

Chamei diretamente o método “upload” da classe ImagensController pelo form e deu este erro:

00:35:03,852 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExecuteMethodInterceptor
00:35:03,852 DEBUG [ExecuteMethodInterceptor] Invoking ImagensController.download(Imovel)
00:35:03,852 DEBUG [OgnlParametersProvider] Applying imovel.idImovel with [250]
00:35:03,860 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor OutjectResult
00:35:03,861 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for ImagensController.download(Imovel) as [imovel]
00:35:03,862 DEBUG [ParametersInstantiatorInterceptor] Parameter values for [DefaultResourceMethod: ImagensController.downloadImagensController.download(Imovel)] are [br.com.imobiliaria.model.Imovel@e8fdc9]
00:35:03,869 DEBUG [OutjectResult       ] outjecting file=240.imagem
00:35:03,874 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor DownloadInterceptor
00:35:03,874 DEBUG [DownloadInterceptor ] Sending a file to the client
06/04/2010 00:35:03 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet default threw exception
br.com.caelum.vraptor.InterceptionException: java.lang.IllegalArgumentException: java.io.FileNotFoundException: 240.imagem (No such file or directory)
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:77)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:77)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
	at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.imobiliaria.interceptor.LoginFuncionarioInterceptor.intercept(LoginFuncionarioInterceptor.java:31)
	at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.IllegalArgumentException: java.io.FileNotFoundException: 240.imagem (No such file or directory)
	at br.com.caelum.vraptor.interceptor.download.FileDownload.<init>(FileDownload.java:45)
	at br.com.caelum.vraptor.interceptor.download.FileDownload.<init>(FileDownload.java:37)
	at br.com.caelum.vraptor.interceptor.download.DownloadInterceptor.intercept(DownloadInterceptor.java:85)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.OutjectResult.intercept(OutjectResult.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:75)
	... 40 more
Caused by: java.io.FileNotFoundException: 240.imagem (No such file or directory)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(FileInputStream.java:106)
	at br.com.caelum.vraptor.interceptor.download.FileDownload.<init>(FileDownload.java:42)
	... 48 more
00:35:03,909 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExecuteMethodInterceptor
00:35:03,909 DEBUG [ExecuteMethodInterceptor] Invoking ImagensController.download(Imovel)
00:35:03,923 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor OutjectResult
00:35:03,924 DEBUG [OutjectResult       ] outjecting file=250.imagem
00:35:03,930 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor DownloadInterceptor
00:35:03,930 DEBUG [DownloadInterceptor ] Sending a file to the client
06/04/2010 00:35:03 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet default threw exception
br.com.caelum.vraptor.InterceptionException: java.lang.IllegalArgumentException: java.io.FileNotFoundException: 250.imagem (No such file or directory)
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:77)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:77)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
	at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.imobiliaria.interceptor.LoginFuncionarioInterceptor.intercept(LoginFuncionarioInterceptor.java:31)
	at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.IllegalArgumentException: java.io.FileNotFoundException: 250.imagem (No such file or directory)
	at br.com.caelum.vraptor.interceptor.download.FileDownload.<init>(FileDownload.java:45)
	at br.com.caelum.vraptor.interceptor.download.FileDownload.<init>(FileDownload.java:37)
	at br.com.caelum.vraptor.interceptor.download.DownloadInterceptor.intercept(DownloadInterceptor.java:85)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.OutjectResult.intercept(OutjectResult.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:75)
	... 40 more
Caused by: java.io.FileNotFoundException: 250.imagem (No such file or directory)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(FileInputStream.java:106)
	at br.com.caelum.vraptor.interceptor.download.FileDownload.<init>(FileDownload.java:42)
	... 48 more
Lucas_Cavalcanti

dá algum erro no upload??

o nome do input file tem q ser o mesmo nome do UploadedFile que está na lógica…

Guevara

Então, tentei com upload, imagem, salva e nenhum desses três vai.

O interessante é que ele diz que sobe mas não sobe:

00:44:34,275 DEBUG [VRaptor             ] VRaptor received a new request
00:44:34,286 DEBUG [DefaultRequestExecution] executing stack  DefaultRequestExecution
00:44:34,294 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor MultipartInterceptor
00:44:34,294 DEBUG [MultipartInterceptor] Trying to parse multipart request.
00:44:34,300 DEBUG [MultipartInterceptor] Using repository [/tmp] for file upload
00:44:34,334 DEBUG [MultipartInterceptor] Found [14] attributes in the multipart form submission. Parsing them.
00:44:34,361 DEBUG [VRaptorRequest      ] Setting imagem with [252(8).jpg]
00:44:34,361 DEBUG [MultipartItemsProcessor] Uploaded file: imagem with [uploadedFile uploadedCompleteName=252(8).jpg uploadedName=252(8).jpg contentType=image/jpeg]

Ao clicar em Enviar esta é a saida:

00:44:34,459 DEBUG [OgnlParametersProvider] Applying submit with [Enviar]

00:44:35,213 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor
00:44:35,213 DEBUG [DefaultResourceTranslator] trying to access /imovel/270/imagem
00:44:35,217 DEBUG [VRaptorRequest      ] Setting imovel.idImovel with [270]
00:44:35,217 DEBUG [DefaultResourceTranslator] found resource [DefaultResourceMethod: ImagensController.downloadImagensController.download(Imovel)]
00:44:35,227 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor FlashInterceptor
00:44:35,230 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor InterceptorListPriorToExecutionExtractor
00:44:35,234 DEBUG [InstantiatedInterceptorHandler] Invoking interceptor LoginFuncionarioInterceptor
00:44:35,234 DEBUG [InstantiatedInterceptorHandler] Invoking interceptor InstantiateInterceptor
00:44:35,266 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ParametersInstantiatorInterceptor
00:44:35,267 DEBUG [AsmBasedTypeCreator ] Trying to make class for ImagensController$download$836896861$8
00:44:35,267 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for ImagensController.download(Imovel) as [imovel]
00:44:35,267 DEBUG [AsmBasedTypeCreator ] Parameter names found for creating type are: [Imovel]
00:44:35,267 DEBUG [AsmBasedTypeCreator ] Method for field 'Imovel' being defined for type Lbr/com/imobiliaria/model/Imovel;
00:44:35,268 DEBUG [AsmBasedTypeCreator ] Methods: [public void ImagensController$download$836896861$8.setImovel(br.com.imobiliaria.model.Imovel), public br.com.imobiliaria.model.Imovel ImagensController$download$836896861$8.getImovel()]
00:44:35,268 DEBUG [AsmBasedTypeCreator ] Fields: [private br.com.imobiliaria.model.Imovel ImagensController$download$836896861$8.Imovel_]
00:44:35,269 DEBUG [CacheBasedTypeCreator] cached generic type for method [DefaultResourceMethod: ImagensController.downloadImagensController.download(Imovel)]
00:44:35,269 DEBUG [OgnlParametersProvider] Applying imovel.idImovel with [270]
00:44:35,275 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for ImagensController.download(Imovel) as [imovel]
00:44:35,275 DEBUG [ParametersInstantiatorInterceptor] Parameter values for [DefaultResourceMethod: ImagensController.downloadImagensController.download(Imovel)] are [br.com.imobiliaria.model.Imovel@bcc8f4]
00:44:35,291 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExecuteMethodInterceptor
00:44:35,292 DEBUG [ExecuteMethodInterceptor] Invoking ImagensController.download(Imovel)
00:44:35,298 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor OutjectResult
00:44:35,299 DEBUG [OutjectResult       ] outjecting file=270.imagem
00:44:35,303 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor DownloadInterceptor
00:44:35,303 DEBUG [DownloadInterceptor ] Sending a file to the client
06/04/2010 00:44:35 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet default threw exception
br.com.caelum.vraptor.InterceptionException: java.lang.IllegalArgumentException: java.io.FileNotFoundException: 270.imagem (No such file or directory)
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:77)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:77)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
	at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.imobiliaria.interceptor.LoginFuncionarioInterceptor.intercept(LoginFuncionarioInterceptor.java:31)
	at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.IllegalArgumentException: java.io.FileNotFoundException: 270.imagem (No such file or directory)
	at br.com.caelum.vraptor.interceptor.download.FileDownload.<init>(FileDownload.java:45)
	at br.com.caelum.vraptor.interceptor.download.FileDownload.<init>(FileDownload.java:37)
	at br.com.caelum.vraptor.interceptor.download.DownloadInterceptor.intercept(DownloadInterceptor.java:85)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.OutjectResult.intercept(OutjectResult.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:75)
	... 40 more
Caused by: java.io.FileNotFoundException: 270.imagem (No such file or directory)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(FileInputStream.java:106)
	at br.com.caelum.vraptor.interceptor.download.FileDownload.<init>(FileDownload.java:42)
	... 48 more

Ele até procura pela imagem, que nao existe, pq na pasta fotos é que não está. =/

Lucas_Cavalcanti

coloca um method=“post” no form de upload, senão não funciona

o submit tá indo pro download direto, que tem a mesma url do upload… só que aceita outro método

Guevara

O form está certo, veja:

<form id="" class="" action="imovel/adiciona" method="post" <c:url value="/imovel/${imovel.idImovel }/imagem"/> enctype="multipart/form-data" >

Na linha do form chamo o método adiciona para os dados do imóvel e o <c:url value="/imovel/${imovel.idImovel }/imagem"/> para o método @Post que está na classe ImagensController.

@Post 
	@Path("/imovel/{imovel.idImovel}/imagem")
	public void upload(Imovel imovel, final UploadedFile imagem) {
        imagens.salva(imagem, imovel);
}
Lucas_Cavalcanti

Não… o form não está certo…

o certo seria:

<form action="<c:url value="/imovel/${imovel.idImovel }/imagem"/>" 
          method="post" enctype="multipart/form-data">

[]'s

Guevara

Mas dessa forma os dados do imóvel não serão gravados. =/

Coloquei o método “adiciona” da classe ImovelController junto com a tag da imagem <c:url value="/imovel/${imovel.idImovel}/imagem"/> referente a classe ImagensController pra gravar os dados do imóvel e ao mesmo tempo subir a imagem.

O Form na verdade é assim:

<form id="" class="" action="imovel/adiciona" <c:url value="/imovel/${imovel.idImovel}/imagem"/> enctype="multipart/form-data" method="post">

<div class="">
<p>Inclus&atilde;o de Im&oacute;vel</p>
</div>	

<ul>
<c:forEach var="error" items="${errors}">   
      <li>${error.message}</li>   
</c:forEach>   
</ul>			
                     
<ul>	
	<li id=""><label class="" for="codImovel">Codigo
	</label>
	<div><input id="" name="imovel.codImovel"
		class="element text small" type="text" maxlength="255" value="" /></div>
	</li>
	
	<li id=""><label class="" for="titulo">T&iacute;tulo
	</label>	
	<div><input id="element_2" name="imovel.titulo"
		class="element text large" type="text" maxlength="255" value="" /></div>
	</li>	
	
	<li id=""><label class="" for="endereco">Endere&ccedil;o
	</label>	
	<div><input id="element_4" name="imovel.endereco"
		class="element text small" type="text" maxlength="255" value="" /></div>
	</li>
	
	<li id=""><label class="" for="bairro">Bairro
	</label>	
	<div><input id="" name="imovel.bairro"
		class="element text small" type="text" maxlength="255" value="" /></div>
	</li>
	
	<li id=""><label class="" for="cidade">Cidade
	</label>	
	<div><input id="" name="imovel.cidade"
		class="element text small" type="text" maxlength="255" value="" /></div>
	</li>
<li id=""><label class="" for="medida">Medida
	</label>	
	<div><input id="" name="imovel.medida"
		class="element text small" type="text" maxlength="255" value="" /></div>
	</li>
	
	<li id=""><label class="" for="valor">Valor (R$)
	</label>	
	<div><input id="" name="imovel.valor"
		class="element text small" type="text" maxlength="20" value="" /></div>
	</li>	
	
	<li id=""><label class="" for="descricao">Descri&ccedil;ao
	</label>	
	<div><textarea id="" name="imovel.descricao"
		class="element textarea large"></textarea></div>
	</li>	
	<li><input type="file" name="imagem" /></li> 
	
</ul>   
  
<input type="submit" name="submit" value="Enviar" />

</form>

[]s

Lucas_Cavalcanti

dá uma olhada no html gerado, vai ser algo do tipo (repare q como o imovel é novo, a expressão ${imovel.idImovel} é vazia):

<form id="" class="" action="imovel/adiciona" /meuContexto/imovel//imagem enctype="multipart/form-data" method="post">

isso nem é html válido!

a lógica que vai ser chamada é a que tá na action: /imóvel/adiciona e essa só adiciona o imóvel… se vc quiser que adicione também a foto, vc tem que receber o UploadedFile no método adiciona…

se vc quiser que tenha uma lógica separada pra fazer o upload, vc vai ter que criar um outro formulário, com action="<c:url value="/imovel/${imovel.idImovel}/imagem"/>"… e esse outro formulário tem que ser em outra página, provavelmente redirecionada do seu form de adição…

Guevara

Obrigado pela ajuda Lucas!

Pensei que a taglib fosse interpretada separadamente da action, por isso coloquei na mesma linha do form, já que não dá pra ser assim, vou refazer td e ver qual é a mlehor forma de criar esse form com imagem.
Assim que terminar, posto aqui o resultado para quem precisar.

Abraço!

Guevara

Olha ai Lucas. Consegui! =)

O código ficou assim:

Classe componente Imagens:

@Component
public class Imagens {

	private File pastaImagens;

	public Imagens() {			  		 
		String pastaImagens = "/home/bruno/fotos";
		this.pastaImagens = new File(pastaImagens);   
		File destino = new File(pastaImagens);
		destino.mkdir();
	}

	public void salva(UploadedFile imagem, Imovel imovel) {		
		File destino = new File(pastaImagens, imovel.getIdImovel() + ".imagem");
		try {
			IOUtils.copyLarge(imagem.getFile(), new FileOutputStream(destino));
		} catch (IOException e) {
			throw new RuntimeException("Erro ao copiar imagem", e);
		}
	}
	
	public File mostra(Imovel imovel) {
		return new File(pastaImagens, imovel.getIdImovel() + ".imagem");
	}

}

Classe ImagensController (ficou bem enxuta):

@Resource
public class ImagensController {	

	private final Imagens imagens;
	private final Result result;
	
	public ImagensController(Imagens imagens, Result result) {	   
	    this.imagens = imagens;	 
	    this.result = result;
	}
	
	@Post 
	@Path("/imovel/{imovel.idImovel}/imagem")
	public void upload(Imovel imovel, final UploadedFile imagem) {	    
	    imagens.salva(imagem, imovel);
	    result.redirectTo(ImovelController.class).edita(imovel.getIdImovel());
	}
	
	 @Get 
	 @Path("/imovel/{imovel.idImovel}/imagem")
	 public File download(Imovel imovel) {
	     return imagens.mostra(imovel);
	 }

}

Após enviar a imagem, redireciona para a própria jsp de edição, o usuário clica em e redireciona para a jsp de listagem.

Ao invés de criar o form de envio da imagem no formulário, criei na página de edição, ficou conforme está na apostila da Caelum:

<form action="<c:url value="/imovel/${imovel.idImovel }/imagem"/>" method="POST" enctype="multipart/form-data">
    <fieldset>
        <legend>Upload de Imagem</legend>
        <input type="file" name="imagem" />
        <button type="submit">Enviar</button>
    </fieldset>
</form>

Consegui de primeira, pois todo o código estava pronto, bastava remover aquela taglib do form do formulário.
Fica ai o código pra quem precisar. Claro que pode ser melhorado, falta ainda a parte de validação da imagem, pode incluir a parte de redimensionamento e também alguma forma de criar galeria de imagem, pois da forma que está só vai uma imagem, se o usuário clicar de novo no upload de imagem, vai sobrescrever a existente. =/

Na listagem estou usando o framework Displaytag, e para listar a imagem no grid fiz assim:

<display:table name="${imovelList}" pagesize="5" id="imovel" requestURI="/Imobiliaria/imovel/lista" export="true">
 <display:column>${imovel_rowNum}</display:column>
 <display:column title="Imagem"><img src="<c:url value="/imovel/${imovel.idImovel}/imagem"/>" width="100" height="100"/></display:column>  
  <display:column property="codImovel" title="Codigo" />
  <display:column property="titulo" title="Titulo" />
  <display:column property="bairro" title="Bairro" />
  <display:column property="valor" title="Valor" />
  <display:column property="area" title="Área" />   
  <display:column title="Remover"><a href="remove?idImovel=${imovel.idImovel}">remover</a></display:column>  
  <display:column title="Alterar"><a href="edita?idImovel=${imovel.idImovel}">alterar</a></display:column>  
</display:table>

Abraço!!!

A

Ressuscitando o topico para resolver uma dúvida. Talvez seja até besteira, mas…

Consigo fazer upload de mais de um arquivo ao mesmo tempo? O Vraptor aceita algo como:

public void uploadFile(UploadedFile[] arquivos) { 
...
}
Lucas_Cavalcanti

até aceita, se eu não me engano…

mas prefira nesse caso usar algum plugin javascript, como o JQuery Uploadify

A

Agora estou tendo o seguinte erro no Jboss 6.0.0:

17:41:35,151 ERROR [br.com.simuquiz.web.listener.ErrorFilter] MAIN ERROR [ID1315514495109]: : br.com.caelum.vraptor.InterceptionException: java.lang.NullPointerException
	at br.com.caelum.vraptor.interceptor.multipart.Servlet3MultipartInterceptor.getParts(Servlet3MultipartInterceptor.java:147) [:]
	at br.com.caelum.vraptor.interceptor.multipart.Servlet3MultipartInterceptor.intercept(Servlet3MultipartInterceptor.java:100) [:]
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) [:]
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) [:]
	at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70) [:]
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92) [:]
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56) [:]
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89) [:]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.0.0.20100911-M5]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.0.0.20100911-M5]
	at br.com.simuquiz.web.listener.TraceFilter.doFilter(TraceFilter.java:50) [:]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.0.0.20100911-M5]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.0.0.20100911-M5]
	at br.com.simuquiz.web.listener.ErrorFilter.doFilter(ErrorFilter.java:45) [:]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.0.0.20100911-M5]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.0.0.20100911-M5]
	at br.com.simuquiz.web.listener.EncodingFilter.doFilter(EncodingFilter.java:34) [:]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.0.0.20100911-M5]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.0.0.20100911-M5]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [:6.0.0.20100911-M5]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) [:6.0.0.20100911-M5]
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181) [:6.0.0.20100911-M5]
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) [:6.0.0.20100911-M5]
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88) [:6.0.0.20100911-M5]
	at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100) [:6.0.0.20100911-M5]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) [:6.0.0.20100911-M5]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [:6.0.0.20100911-M5]
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) [:6.0.0.20100911-M5]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [:6.0.0.20100911-M5]
	at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53) [:6.0.0.20100911-M5]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [:6.0.0.20100911-M5]
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [:6.0.0.20100911-M5]
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) [:6.0.0.20100911-M5]
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) [:6.0.0.20100911-M5]
	at java.lang.Thread.run(Thread.java:619) [:1.6.0_16]
Caused by: java.lang.NullPointerException
	at org.apache.catalina.connector.Request.getParts(Request.java:3210) [:6.0.0.20100911-M5]
	at org.apache.catalina.connector.RequestFacade.getParts(RequestFacade.java:1112) [:6.0.0.20100911-M5]
	at javax.servlet.http.HttpServletRequestWrapper.getParts(HttpServletRequestWrapper.java:347) [:1.0.0.Beta2]
	at br.com.caelum.vraptor.interceptor.multipart.Servlet3MultipartInterceptor.getParts(Servlet3MultipartInterceptor.java:138) [:]
	... 34 more
Lucas_Cavalcanti

tenta colocar o jar do commons-fileupload no classpath

G

Eu fiquei muito curioso pelo NullPointerException. O Jboss 6.0 não implementa corretamente a JSR315, por isso que quando você faz um request.getParts dá esse NullPointerException. De qualquer forma é algo que deveria ser validado.

Mas se você fizer o que o Lucas falou, o VRaptor irá dar preferência a usar o commons-fileupload, que funciona 100% no JBoss 6.0 com VRaptor.

Qual a versão do VRaptor você está usando?

A

Estou usando:

vraptor-3.2.0
commons-fileupload-1.2.2

Continua dando o mesmo problema! :frowning:

Lucas_Cavalcanti

atualiza pro vraptor 3.3.1

A

Tentei atualizar, mas estou tendo erros estranhos na hora de subir. Uns erros loucos com scannotation :frowning:
Ainda não tive tempo de parar pra resolver.

Lucas_Cavalcanti

esse problema do scannotation já foi resolvido… se vc quiser usar a versão snapshot que resolveu:
https://oss.sonatype.org/content/repositories/snapshots/br/com/caelum/vraptor/3.4.0-SNAPSHOT/vraptor-3.4.0-20110704.175134-7.jar

A

Tem previsao para saida da versão estável? Vou implementando outras coisas e quando sair a estavel volto nessa atualizacao, quero atualizar tambem a versao do jboss…

Lucas_Cavalcanti

breve :wink:

A

Consegui corrigir o problema atualizando para a versao 6.1.0 Final do Jboss! :slight_smile:
Obrigado a todos!

E

Lucas, me tira uma dúvida e pra salvar em banco de dados ? Oque mudo no código já que não irei salvar em nenhuma pasta.

public void atualizaTermo(Termo termo, UploadedFile fileInfo) throws FileNotFoundException, IOException {

        if (fileInfo == null) {
            System.out.println("\n\n\nErro upload, não foi selecionado o arquivo para UPLOAD\n\n");
        } else {
            File destino = new File("C:/Documents and Settings/Meus documentos/NetBeansProjects/SisSTM/web/downloads/" + fileInfo.getFileName());
            destino.createNewFile();
            InputStream stream = fileInfo.getFile();
            IOUtils.copy(stream, new FileOutputStream(destino));
            System.out.println("\n\n\nUpload feito com sucesso\n\n\n");
        }
        result.redirectTo(this).lista();//Após o upload, redireciona para a lista
    }

Att Gordon

Lucas_Cavalcanti

ao invés de copiar o stream pra um arquivo, copie-o para um ByteArrayOutputStream e salve esse byte[] no banco (pode ser num atributo da sua entidade anotado com @Lob)…

se eu não me engano o IOUtils já tem um método que transforma o InputStream em byte[]. Se não tiver tenta usar o ByteStreams do google guava.

E

Obrigado, funcionando posto a solução.
Tks
Att Gordon

E

Lucas, segue abaixo a mudança. Não sei se entendi, mas não salva no BD e nem dá erro… ou seja… pra onde foi o arquivo rsrsrrsrs

Segue a mudança da maneira como entendi:

public void atualizaTermo(Termo termo, UploadedFile fileInfo) throws FileNotFoundException, IOException {

        if (fileInfo == null) {
            System.out.println("\n\n\nErro upload, não foi selecionado o arquivo para UPLOAD\n\n");
        } else {            
            InputStream stream = fileInfo.getFile();
            IOUtils.copy(stream, new ByteArrayOutputStream());
            System.out.println("\n\n\nUpload feito com sucesso\n\n\n");
        }
        result.redirectTo(this).lista();//Após o upload, redireciona para a lista
       
       
   }

Att Gordon

Lucas_Cavalcanti

guarda o BAOS em uma variável, e depois salva o baos.getBytes() no banco… vc precisa colocar um atributo byte[] no termo

E

Lucas, ainda não rolou, estou errando e não acho .

Modelo --------
//omitido outros metodos
@Lob @Basic(fetch= FetchType.EAGER)  
    @Column(name = "file")
    private byte[] file;

//gets sets
//omitido os gets/sets
Dao --------
//omitido outros metodos
public void atualiza(byte[] buffer) {
        Transaction tx = session.beginTransaction();
		session.save(buffer);
		tx.commit();
    }
Controller -------
public void atualizaTermo(Termo termo, UploadedFile fileInfo) throws FileNotFoundException, IOException {
        
        if (fileInfo == null) {
            System.out.println("\n\n\nErro upload, não foi selecionado o arquivo para UPLOAD\n\n");
        } else {
            byte[] buffer;
            InputStream stream = fileInfo.getFile();
            IOUtils.copy(stream, new ByteArrayOutputStream());
            ByteArrayOutputStream baos = new ByteArrayOutputStream();            
            buffer = baos.toByteArray();                        
            dao.atualiza(buffer);
            
            System.out.println("\n\n\nUpload feito com sucesso\n\n\n");
        }
        result.redirectTo(this).lista();//Após o upload, redireciona para a lista

Dei uma lida sobre BAOS, mas não entendi como usa-lo junto ao hibernate e vraptor.

Att Gordon

Lucas_Cavalcanti

vc está copiando pro output errado:

ByteArrayOutputStream baos = new ByteArrayOutputStream();              

            IOUtils.copy(stream, baos);  
            buffer = baos.toByteArray();                          
            dao.atualiza(buffer);

e no dao não é pra mandar salvar o buffer, é pra colocar o buffer na entidade e mandar salvar a entidade

E

Correto! Muito obrigado.
Att Gordon

H

Pessoal estou fazendo o upload mais esta vindo nulo quando

será que alguem pode me ajudar?

A

Qual versão do vraptor você está usando? Tive esse problema usando a 3.2.1. Pois o interceptador que deveria pegar o request estava sem a anotação e simplesmente não rodava. Caso você possa atualize a sua versão do vraptor. Caso não possa faça como eu:

Simplesmente extendi a classe CommonsUploadMultipartInterceptor (o interceptador que deveria ter as anotações @Intercepts e @RequestScoped), adicionando as anotações corretamente, assim o vraptor chama a minha instancia para tratar o upload, e minha instancia chama o proprio vraptor… só isso:

@Intercepts
@RequestScoped
public class FileUploadInterceptor extends CommonsUploadMultipartInterceptor {

    public FileUploadInterceptor(HttpServletRequest request, MutableRequest parameters, MultipartConfig config, Validator validator) {
        super(request, parameters, config, validator);
    }

    @Override
    public boolean accepts(ResourceMethod method) {
        return super.accepts(method);
    }

    @Override
    public void intercept(InterceptorStack stack, ResourceMethod method, Object resourceInstance) throws InterceptionException {
        super.intercept(stack, method, resourceInstance);
    }
}
H

estou usando a 3.3.1 eu tenho que importar o commons-fileupload para funcionar?

Lucas_Cavalcanti

sim

H

Agora funcionou obrigado pessoal

esdras_63

Boa noite! Estou com um problema igualzinho do cara que criou o tópico: Eu passo o file como parâmetro mas ele vem null… Porém como já pesquisei em [telefone removido] tópicos eu vi que o problema era o bendito jar ou o povo esqueceu de colocar o multipart/form-data. Mas não sei o que fazer pois está tudo perfeito(Perfeito mesmo) não tem problema nenhum com os jars.
Uso netbeans, VRaptor 3.3.1 e o glassfish como servidor.

Página jsp:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page contentType="text/html" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Upload</title>
    <script language="JavaScript">
      <!--
      function ChecaCampos() {
        var form = document.forms[0];
        
        if (form.imagem.value == "") {
          alert("Favor escolher uma imagem!");
          
          return false;
        } else {
          return true;
        }
      }
      -->
      <!--
      if (${requestScope.LoginInvalido == true}) {
        alert("Nome de usuário ou senha inválidos!");
      }
      -->
    </script>
  </head>
  <body>
    <c:import url="/templates/header.jsp"/>
    <table width="578" height="144" border="0" align="center">
      <tr>
        <td height="38" colspan="2" align="center" valign="top"><p><font size="+3">Upload de foto</font></p></td>
      </tr>
      <form action="UploadCapa.brz" enctype="multipart/form-data" method="post" onsubmit="return ChecaCampos();">
        <tr>
          <td width="269" height="21" align="right"><label for="Foto">Foto:</label></td>
          <td width="299">
            <input type="file" name="imagem" id="imagem">
          </td>
        </tr>
        <tr>
          <td height="69" align="right">&nbsp;</td>
          <td width="299" valign="top">
            <input type="submit" name="up" id="Upload" value="Upload">
          </td>
        </tr>
      </form>
    </table>
    <c:import url="/templates/footer.jsp"/>
  </body>
</html>

Método do VRaptor:

@Resource
public class AlbunsController {

  private final Result result;
  private final AlbumDAO dao;
  private final HttpServletRequest request;
  private final File img;

  public AlbunsController(Result result, AlbumDAO dao, HttpServletRequest request, ServletContext context) {
    this.img = new File(context.getRealPath("/img"));

    this.result = result;
    this.dao = dao;
    this.request = request;
  }
  
  @Path("/admin/UploadCapa.brz")
  public void UploadCapa(UploadedFile imagem) {
    File destino = new File(img, imagem.getFileName());

    try {
      IOUtils.copyLarge(imagem.getFile(), new FileOutputStream(destino));
    } catch (IOException e) {
      throw new RuntimeException("Não foi possível copiar a imagem!");
    }
  }
}

Erro:

br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: java.lang.NullPointerException
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:96)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:89)
	at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.multipart.CommonsUploadMultipartInterceptor.intercept(CommonsUploadMultipartInterceptor.java:131)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:23)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
	at Filtros.ManipulaUsuarios.doFilter(ManipulaUsuarios.java:37)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
	at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.NullPointerException
	at Controllers.AlbunsController.UploadCapa(AlbunsController.java:79)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:61)
	... 55 more

Obrigado!

Lucas_Cavalcanti

vc colocou o jar da commons-fileupload no WEB-INF/lib?

liga o log de info do vraptor, e ve se aparece alguma mensagem sobre multipart

esdras_63

o jar está certinho. Acho que achei o problema mais não sei como resolver… Apareceu um negocio que excedeu o limite de tamanho olha os infos:

Informações: 18:28:10,277 DEBUG [VRaptor             ] VRaptor received a new request

Informações: 18:28:10,610 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor

Informações: 18:28:10,620 DEBUG [DefaultResourceTranslator] trying to access /login.brz

Informações: 18:28:10,640 DEBUG [DefaultResourceTranslator] found resource [DefaultResourceMethod: RedirectController.loginRedirectController.login()]

Informações: 18:28:10,737 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExceptionHandlerInterceptor

Informações: 18:28:10,785 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor FlashInterceptor

Informações: Instantiated an instance of org.hibernate.validator.engine.resolver.JPATraversableResolver.
Informações: 18:28:11,270 DEBUG [ValidatorFactoryCreator] Initializing JSR303 factory for bean validation

Informações: 18:28:11,330 DEBUG [JSR303ValidatorFactory] Initializing JSR303 Validator

Informações: 18:28:11,354 DEBUG [MessageInterpolatorFactory] Initializing JSR303 MessageInterpolator

Informações: 18:28:11,486 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor InstantiateInterceptor

Informações: 18:28:11,646 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExecuteMethodInterceptor

Informações: 18:28:11,650 DEBUG [ExecuteMethodInterceptor] Invoking RedirectController.login()

Informações: 18:28:11,731 DEBUG [DefaultPageResult   ] forwarding to /login.jsp

Informações: 18:28:11,743 DEBUG [DefaultStaticContentHandler] Deferring request to container: /Fotos/login.jsp 

Informações: 18:28:13,040 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ForwardToDefaultViewInterceptor

Informações: 18:28:13,055 DEBUG [ForwardToDefaultViewInterceptor] Request already dispatched and commited somewhere else, not forwarding.

Informações: 18:28:13,092 DEBUG [VRaptor             ] VRaptor ended the request

Informações: 18:28:13,122 DEBUG [DefaultStaticContentHandler] Deferring request to container: /Fotos/img/Brazcom.png 

Informações: 18:28:13,109 DEBUG [DefaultStaticContentHandler] Deferring request to container: /Fotos/img/Footer.png 

Informações: 18:28:13,142 DEBUG [DefaultStaticContentHandler] Deferring request to container: /Fotos/css/menu/menu_style.css 

Informações: 18:28:13,201 DEBUG [DefaultStaticContentHandler] Deferring request to container: /Fotos/css/menu/images/seperator.gif 

Informações: 18:28:17,078 DEBUG [VRaptor             ] VRaptor received a new request

Informações: 18:28:17,090 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor

Informações: 18:28:17,093 DEBUG [DefaultResourceTranslator] trying to access /VerificaLogin.brz

Informações: 18:28:17,094 DEBUG [DefaultResourceTranslator] found resource [DefaultResourceMethod: LoginController.VerificaLoginLoginController.VerificaLogin(Login)]

Informações: 18:28:17,100 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExceptionHandlerInterceptor

Informações: 18:28:17,104 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor FlashInterceptor

Informações: 18:28:17,128 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor InstantiateInterceptor

Grave: log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
Grave: log4j:WARN Please initialize the log4j system properly.
Grave: log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Informações: 18:28:21,550 DEBUG [LazyInterceptorHandler] Invoking interceptor ParametersInstantiatorInterceptor

Informações: 18:28:21,574 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for LoginController.VerificaLogin(Login) as [login]

Informações: 18:28:21,668 DEBUG [OgnlParametersProvider] Applying nomeUsuario with [admin]

Informações: 18:28:21,750 DEBUG [OgnlParametersProvider] Applying senha with [brazcom]

Informações: 18:28:21,759 DEBUG [ParametersInstantiatorInterceptor] Parameter values for [DefaultResourceMethod: LoginController.VerificaLoginLoginController.VerificaLogin(Login)] are [Entidades.Login[ nomeUsuario=admin ]]

Informações: 18:28:21,765 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExecuteMethodInterceptor

Informações: 18:28:21,769 DEBUG [ExecuteMethodInterceptor] Invoking LoginController.VerificaLogin(Login)

Informações: 18:28:21,933 DEBUG [DefaultPageResult   ] forwarding to /index.jsp

Informações: 18:28:21,937 DEBUG [DefaultStaticContentHandler] Deferring request to container: /Fotos/index.jsp 

Informações: 18:28:22,324 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ForwardToDefaultViewInterceptor

Informações: 18:28:22,337 DEBUG [ForwardToDefaultViewInterceptor] Request already dispatched and commited somewhere else, not forwarding.

Informações: 18:28:22,369 DEBUG [VRaptor             ] VRaptor ended the request

Informações: 18:28:24,170 DEBUG [DefaultStaticContentHandler] Deferring request to container: /Fotos/css/menu/images/hover.gif 

Informações: 18:28:24,183 DEBUG [DefaultStaticContentHandler] Deferring request to container: /Fotos/css/menu/images/sub_sep.gif 

Informações: 18:28:25,048 DEBUG [VRaptor             ] VRaptor received a new request

Informações: 18:28:25,060 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor

Informações: 18:28:25,063 DEBUG [DefaultResourceTranslator] trying to access /albuns.brz

Informações: 18:28:25,064 DEBUG [DefaultResourceTranslator] found resource [DefaultResourceMethod: AlbunsController.albunsAlbunsController.albuns()]

Informações: 18:28:25,073 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExceptionHandlerInterceptor

Informações: 18:28:25,078 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor FlashInterceptor

Informações: 18:28:25,097 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor InstantiateInterceptor

Informações: 18:28:25,274 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExecuteMethodInterceptor

Informações: 18:28:25,277 DEBUG [ExecuteMethodInterceptor] Invoking AlbunsController.albuns()

Informações: 18:28:25,323 DEBUG [DefaultPageResult   ] forwarding to /albuns.jsp

Informações: 18:28:25,327 DEBUG [DefaultStaticContentHandler] Deferring request to container: /Fotos/albuns.jsp 

Informações: 18:28:25,609 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ForwardToDefaultViewInterceptor

Informações: 18:28:25,656 DEBUG [ForwardToDefaultViewInterceptor] Request already dispatched and commited somewhere else, not forwarding.

Informações: 18:28:25,657 DEBUG [VRaptor             ] VRaptor ended the request

Informações: 18:28:26,747 DEBUG [DefaultStaticContentHandler] Deferring request to container: /Fotos/css/menu/images/hover_sub.gif 

Informações: 18:28:27,224 DEBUG [VRaptor             ] VRaptor received a new request

Informações: 18:28:27,233 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor

Informações: 18:28:27,237 DEBUG [DefaultResourceTranslator] trying to access /admin/CadAlbum.brz

Informações: 18:28:27,240 DEBUG [DefaultResourceTranslator] found resource [DefaultResourceMethod: RedirectController.CadAlbumRedirectController.CadAlbum()]

Informações: 18:28:27,246 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExceptionHandlerInterceptor

Informações: 18:28:27,249 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor FlashInterceptor

Informações: 18:28:27,268 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor InstantiateInterceptor

Informações: 18:28:27,277 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExecuteMethodInterceptor

Informações: 18:28:27,280 DEBUG [ExecuteMethodInterceptor] Invoking RedirectController.CadAlbum()

Informações: 18:28:27,287 DEBUG [DefaultPageResult   ] forwarding to /admin/CadAlbum.jsp

Informações: 18:28:27,292 DEBUG [DefaultStaticContentHandler] Deferring request to container: /Fotos/admin/CadAlbum.jsp 

Informações: 18:28:27,547 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ForwardToDefaultViewInterceptor

Informações: 18:28:27,563 DEBUG [ForwardToDefaultViewInterceptor] Request already dispatched and commited somewhere else, not forwarding.

Informações: 18:28:27,591 DEBUG [VRaptor             ] VRaptor ended the request

Informações: 18:28:30,238 DEBUG [VRaptor             ] VRaptor received a new request

Informações: 18:28:30,251 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor

Informações: 18:28:30,255 DEBUG [DefaultResourceTranslator] trying to access /admin/CadAlbumA.brz

Informações: 18:28:30,256 DEBUG [DefaultResourceTranslator] found resource [DefaultResourceMethod: AlbunsController.CadAlbumAAlbunsController.CadAlbumA(Album, boolean)]

Informações: 18:28:30,261 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExceptionHandlerInterceptor

Informações: 18:28:30,268 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor FlashInterceptor

Informações: 18:28:30,282 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor CommonsUploadMultipartInterceptor

Informações: 18:28:30,285  INFO [CommonsUploadMultipartInterceptor] Request contains multipart data. Try to parse with commons-upload.

Informações: 18:28:30,293 DEBUG [CommonsUploadMultipartInterceptor] Using repository C:\Users\occ\AppData\Local\Temp for file upload

Informações: 18:28:30,403 DEBUG [CommonsUploadMultipartInterceptor] Found 4 attributes in the multipart form submission. Parsing them.

Informações: 18:28:30,446 DEBUG [CommonsUploadMultipartInterceptor] album.nome is a field

Informações: 18:28:30,464 DEBUG [CommonsUploadMultipartInterceptor] album.descricao is a field

Informações: 18:28:30,466 DEBUG [CommonsUploadMultipartInterceptor] UploadCapa is a field

Informações: 18:28:30,467 DEBUG [CommonsUploadMultipartInterceptor] Enviar is a field

Informações: 18:28:30,490 DEBUG [VRaptorRequest      ] Setting album.nome with [teste]

Informações: 18:28:30,493 DEBUG [VRaptorRequest      ] Setting album.descricao with []

Informações: 18:28:30,494 DEBUG [VRaptorRequest      ] Setting UploadCapa with [on]

Informações: 18:28:30,495 DEBUG [VRaptorRequest      ] Setting Enviar with [Enviar]

Informações: 18:28:30,496 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor InstantiateInterceptor

Informações: 18:28:30,653 DEBUG [LazyInterceptorHandler] Invoking interceptor ParametersInstantiatorInterceptor

Informações: 18:28:30,657 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for AlbunsController.CadAlbumA(Album, boolean) as [album, UploadCapa]

Informações: 18:28:30,658 DEBUG [OgnlParametersProvider] Applying nome with [teste]

Informações: 18:28:30,660 DEBUG [OgnlParametersProvider] Applying descricao with []

Informações: 18:28:30,672 DEBUG [ParametersInstantiatorInterceptor] Parameter values for [DefaultResourceMethod: AlbunsController.CadAlbumAAlbunsController.CadAlbumA(Album, boolean)] are [Entidades.Album[ albumID=null ], true]

Informações: 18:28:30,680 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExecuteMethodInterceptor

Informações: 18:28:30,683 DEBUG [ExecuteMethodInterceptor] Invoking AlbunsController.CadAlbumA(Album, boolean)

Informações: 18:28:30,689 DEBUG [DefaultPageResult   ] forwarding to /admin/UploadAlbum.jsp

Informações: 18:28:30,693 DEBUG [DefaultStaticContentHandler] Deferring request to container: /Fotos/admin/UploadAlbum.jsp 

Informações: 18:28:31,067 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ForwardToDefaultViewInterceptor

Informações: 18:28:31,069 DEBUG [ForwardToDefaultViewInterceptor] Request already dispatched and commited somewhere else, not forwarding.

Informações: 18:28:31,070 DEBUG [VRaptor             ] VRaptor ended the request

Informações: 18:28:34,972 DEBUG [VRaptor             ] VRaptor received a new request

Informações: 18:28:34,981 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor

Informações: 18:28:34,985 DEBUG [DefaultResourceTranslator] trying to access /admin/UploadCapa.brz

Informações: 18:28:34,986 DEBUG [DefaultResourceTranslator] found resource [DefaultResourceMethod: AlbunsController.UploadCapaAlbunsController.UploadCapa(UploadedFile)]

Informações: 18:28:34,991 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExceptionHandlerInterceptor

Informações: 18:28:34,996 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor FlashInterceptor

Informações: 18:28:35,010 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor CommonsUploadMultipartInterceptor

Informações: 18:28:35,013  INFO [CommonsUploadMultipartInterceptor] Request contains multipart data. Try to parse with commons-upload.

Informações: 18:28:35,015 DEBUG [CommonsUploadMultipartInterceptor] Using repository C:\Users\occ\AppData\Local\Temp for file upload

Informações: 18:28:35,039  WARN [CommonsUploadMultipartInterceptor] The file size limit was exceeded.
org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (4311417) exceeds the configured maximum (2097152)
	at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:937)
	at org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:331)
	at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:351)
	at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
	at br.com.caelum.vraptor.interceptor.multipart.CommonsUploadMultipartInterceptor.intercept(CommonsUploadMultipartInterceptor.java:97)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:23)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
	at Filtros.ManipulaUsuarios.doFilter(ManipulaUsuarios.java:37)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
	at java.lang.Thread.run(Thread.java:722)

Informações: 18:28:35,078 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor InstantiateInterceptor

Informações: 18:28:35,285 DEBUG [LazyInterceptorHandler] Invoking interceptor ParametersInstantiatorInterceptor

Informações: 18:28:35,287 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for AlbunsController.UploadCapa(UploadedFile) as [imagem]

Informações: 18:28:35,294 DEBUG [ParametersInstantiatorInterceptor] Parameter values for [DefaultResourceMethod: AlbunsController.UploadCapaAlbunsController.UploadCapa(UploadedFile)] are [null]

Informações: 18:28:35,299 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExecuteMethodInterceptor

Informações: 18:28:35,300 DEBUG [ExecuteMethodInterceptor] Invoking AlbunsController.UploadCapa(UploadedFile)

Informações: 18:28:35,302 DEBUG [DefaultExceptionMapper] find for exception class java.lang.NullPointerException

Advertência: StandardWrapperValve[default]: PWC1406: Servlet.service() for servlet default threw exception
br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: java.lang.NullPointerException
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:96)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:89)
	at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.multipart.CommonsUploadMultipartInterceptor.intercept(CommonsUploadMultipartInterceptor.java:131)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:23)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
	at Filtros.ManipulaUsuarios.doFilter(ManipulaUsuarios.java:37)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
	at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
	at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.NullPointerException
	at Controllers.AlbunsController.UploadCapa(AlbunsController.java:79)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:61)
	... 55 more

Peguei um pouco das infos antes do erro. Você sabe como aumenta o tamanho máximo do arquivo?

Lucas_Cavalcanti

se o tamanho estoura ele vai null sim… a primeira linha do seu método do upload tem que ser algo do tipo:

validator.onErrorRedirectTo(this).formulario();

assim ele redireciona com erro de validação

esdras_63

Obrigado cara! Consegui resolver o problema aumentando o limite máximo do upload.

Obrigado!

R

Pessoa,

Consegui fazer o upload dos arquivos. Porém, quando o sistema vai rodar no servidor de verdade está aparecendo o erro "Permission Denied". O significado obviamente eu sei. Mas como posso solucioná-lo, sem a necessidade de alteração no servidor(Ele não é meu)?

desde já obrigado,

Lucas_Cavalcanti

tá dando permission denied aonde? na pasta que vc tá tentando salvar, ou antes de chegar no seu método de upload?

R

A exception ocorre quando ele tenta salvar na pasta que eu escolhi.

Lucas_Cavalcanti

a pasta que você escolheu está sem permissão aparentemente… tenta apontar pra uma pasta que você tem acesso

R

Na verdade, essa pasta fui eu quem criou, ou seja tenho acesso a ela. :stuck_out_tongue:

porém tem um detalhe. Quando eu pego o ContextPath o resultado é home/login/public_html/fotos. Dessa forma acontece a exception “Permission Denied”.

Se eu escolher o caminho explicitamente, por exemplo, public_html/fotos, aparece uma mensagem informando que não é possível encontrar a pasta. :stuck_out_tongue:

Lucas_Cavalcanti

vc precisa colocar o caminho inteiro, começando com / (/home/login/blah)

ou se for uma pasta dentro do servidor vc precisa usar servletContext.getRealPath("/pasta")

R

Lucas,

O código que eu estou utilizando é este:

File root = new File(context.getRealPath("/fotos"));
            	
                File dir = new File(root.getCanonicalPath() + File.separator);
                
                IOUtils.copy(imagem.getFile(), new FileOutputStream(new File(root.getCanonicalPath(), imagem.getFileName())));
C

malayout:
Funcionou.

malayout, tenho uma duvida. Como ficaria a implementação no JSP? Sera que poderia colocar o JSP para eu dar uma olhada?

Obrigado.

if(arquivo == null) {
				System.out.println("Erro upload");
			}
			else
			{	File destino = new File("c:\\repositorio\\"+arquivo.getFileName());
				destino.createNewFile();
				InputStream stream = arquivo.getFile();
				IOUtils.copy(stream,new FileOutputStream(destino));
				System.out.println("Upload Finish");
			}
			result.include("variable",arquivo.getFileName());

Obrigado pela ajuda.

Criado 27 de novembro de 2009
Ultima resposta 22 de nov. de 2013
Respostas 92
Participantes 13