(Resolvido) Upload com Vraptor

Blz lucas arrumado, agora nao da erro ele redireciona normal mais nao esta gravando a imagem la na pasta estranho isso rss.

na classe imagem esta assim

 private File pastaImagens;
        public Imagens(ServletContext context) {
        String caminhoImagens = context.getRealPath("/WEB-INF/imagens");
        pastaImagens = new File(caminhoImagens);
        pastaImagens.mkdir();
}

o formulário está como multipart-form-data? o uploadedFile está vindo preenchido? vc está copiando o getFile para um arquivo nessa pasta?

sim o form esta

<form action="<c:url value="/admin/${produto.id}/imagem"/>" method="POST" enctype="multipart/form-data">
            <fieldset>
                    <legend>Editar Produto</legend>
                     <legend>Upload de Imagem</legend>
                     <input type="file" name="imagem" />

                     <button type="submit" name="_method" value="POST">Alterar</button>
                    

                    
            </fieldset>
        </form>

meu updatefile esta assim

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

tente colocar uma outra pasta…

se vc está rodando o servidor pelo netbeans ou eclipse, a pasta WEB-INF/ não é a mesma da sua aplicação, é uma interna…

tenta colocar um caminho fixo para a pasta imagens, tipo “C:\Imagens”

[quote=Lucas Cavalcanti]tente colocar uma outra pasta…

se vc está rodando o servidor pelo netbeans ou eclipse, a pasta WEB-INF/ não é a mesma da sua aplicação, é uma interna…

tenta colocar um caminho fixo para a pasta imagens, tipo “C:\Imagens”[/quote]

Opa eu coloquei ai ele deu um erro mais no erro vi o caminho que o netbeans salva e criei a pasta la dentro e deu certo.
Ele esta colocando a extensao .imagem, eu posso alterar na classe para ele gravar .jpg? ou deixo .imagem mesmo?
Obrigado!!!

pode gravar com a extensão que vc quiser… só cuidado na hora de abrir :wink:

O Upload esta feito agora para mostrar esta imagem na tela eu coloquei o seguinte codigo

<a href="<c:url value="/admin/${produto.id}/editafoto" />"><img  alt="Alterar Imagem" title="Alterar Imagem" src="<c:url value="/imagens/${produto.id}/imagem"/>" width="20px" height="20px"></img></a><br /></td

Esta é a parte em questao

src="<c:url value="/imagens/${produto.id}/imagem"/>

Esta correto?

bom, se essa lógica retorna um File ou InputStream ou Download da imagem, sim :wink:

Sim a logica retorna um file

public File mostra(Produto produto) {
            return new File(pastaImagens, produto.getId() + ".imagem");
        }

Mais nada aparece onde estou errando?
Grato

tenta copiar a url que cai nessa lógica direto no browser. Aparece a imagem?

a imagem do id passado existe na pasta?

[quote=Lucas Cavalcanti]tenta copiar a url que cai nessa lógica direto no browser. Aparece a imagem?

a imagem do id passado existe na pasta?[/quote]

sim o id esta sim
9.imagem

O caminho completo seria este

C:\Users\Fred\Documents\NetBeansProjects\modular1\build\web\imagens

mais no netbeans eu so coloco o caminho como imagens

Achei o erro a url estava assim: src="<c:url value="/imagens/${produto.id}/imagem"/>

eu mudei para src="<c:url value="/imagens/${produto.id}.imagem"/>

e funcionou!

Gostaria de Agradecer aqui a todos que me ajudaram.
Voces sao show mesmo.

Gostei do Vraptor trabalho em uma empresa de software que é a maior do sul do brasil no ramo textil. estamos estudando novas tecnologias e levarei o Vraptor para a reuniao.
Valeu galera