Bom dia estava lendo um outro topico sobre upload de arquivos , eu segui passo a passo mas minha aplicação ainda não funciona
, esta com a seguinte mensagem
####################### Fechando Sessão do hibernate… #######################
09/07/2012 12:18:30 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [default] in context with path [/Apostila_FJ-28] 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:93)
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.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
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.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.multipart.Servlet3MultipartInterceptor.intercept(Servlet3MultipartInterceptor.java:151)
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:44)
at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NullPointerException
at br.com.caelum.goodbuy.imagens.Imagens.salva(Imagens.java:31)
at br.com.caelum.goodbuy.controller.ImagensController.upload(ImagensController.java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:61)
… 44 more
Alguem poderia me dar um auxilio por gentileza?Vlw
Puxa que sorte, é vc mesmo que eu queria falar, vi que foi vc que resolveu os outros topicos , antes de tudo muito obrigado vc vai salvar meu emprego cara rs
Seguinte minha classe imagens esta assim:
/*Componente do VRaptor que será responsável
por guardar as imagens no servidor.
Esse componente vai criar uma pasta fixa onde todas as imagens serão guardadas.*/
package br.com.caelum.goodbuy.imagens;
Esse é meu form...
<form action="<c:url value="/produtos/${produto.id}/imagem"/>" method="Post">
<fieldset>
<legend>Editar Produto</legend>
<label for ="nome">Nome:</label>
<input id="nome" type="text" name="produto.nome" value="${produto.nome}" />
<label for ="descicao">Descricao:</label>
<textarea id ="descricao" name="produto.descricao">${produto.descricao}</textarea>
<label for ="preco">Preco:</label>
<input id="preco" type="text" name="produto.preco" value="${produto.preco}" />
<button type="submit" name="_method" value="PUT">Alterar</button>
</fieldset>
</form>
<form action="<c:url value="/produtos/${produto.id }/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>
esse é o Controller
/*
* Controller que vai tratar dos uploads e downloads de imagens
* */
package br.com.caelum.goodbuy.controller;
import java.io.File;
import java.io.IOException;
import br.com.caelum.goodbuy.imagens.Imagens;
import br.com.caelum.goodbuy.modelo.Produto;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.interceptor.multipart.UploadedFile;
import br.com.caelum.vraptor.validator.Validations;
import static org.hamcrest.Matchers.*;
import static br.com.caelum.vraptor.view.Results.*;
@Resource
public class ImagensController {
private final Validator validator;
private final Imagens imagens;
private final Result result;
public ImagensController(Validator validator, Imagens imagens, Result result) {
this.validator = validator;
this.imagens = imagens;
this.result = result;
}
@Post @Path("/produtos/{produto.id}/imagem")
public void upload(Produto produto, final UploadedFile imagem) throws IOException {
validator.onErrorRedirectTo(ProdutosController.class).edita(produto.getId());
imagens.salva(imagem, produto);
result.redirectTo(ProdutosController.class).edita(produto.getId());
}
@Get @Path("/produtos/{produto.id}/imagem")
public File download(Produto produto) {
return imagens.mostra(produto);
}
}
/*Componente do VRaptor que será responsável
* por guardar as imagens no servidor.
* Esse componente vai criar uma pasta fixa onde todas as imagens serão guardadas.*/
package br.com.caelum.goodbuy.imagens;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.servlet.ServletContext;
import org.apache.commons.io.IOUtils;
import br.com.caelum.goodbuy.modelo.Produto;
import br.com.caelum.vraptor.interceptor.multipart.UploadedFile;
import br.com.caelum.vraptor.ioc.Component;
@Component
public class Imagens {
private File pastaImagens;
public Imagens(ServletContext context) {
//String caminhoImagens = context.getRealPath("C:/Imagens");
pastaImagens = new File("C:/imagens");
pastaImagens.mkdir();
}
public void salva(UploadedFile imagem, Produto produto) throws IOException {
File destino = new File(pastaImagens, produto.getId() + ".jpg");
try {
destino.createNewFile();
IOUtils.copyLarge(imagem.getFile(), new FileOutputStream(destino));
} catch (FileNotFoundException e) {
e.printStackTrace();
throw new FileNotFoundException("Arquivo não encontrado!");
} catch (IOException e) {
e.printStackTrace();
throw new IOException("Não foi possivel enviar o arquivo!");
}
System.out.println("Teste para saber se passa por aki!!!");
imagem.getFile().close();
}
public File mostra(Produto produto) {
File file = new File(pastaImagens,produto.getId()+".jpg" );
return (file.exists()) ? file : new File(pastaImagens+"/default.jpg");
}
}