Porém, eu disponibilizo imagens e arquivos partindo do java e com uma URL, o VRaptor retorna esta imagem ou arquivo para mim e eu consigo usar na view.
O problema é que este plugin só funciona quando eu passo o caminho da imagem de verdade (sem passar pelo VRaptor). Só que eu preciso que ela passe pelo VRaptor para que eu controle o que cada um pode ver ou nao.
Então, como que eu consigo enviar um arquivo para a view de forma correta? Hoje eu uso o FileDownload como retorno do método.
O que acontece se você acessar diretamente pelo browser o endereço da imagem?
/Thumbnail/carregar/${obj.codigo}
Tecnicamente não há diferença alguma você acessar o arquivo diretamente ou passando pelo vraptor, desde que mantidos os headers.
Rafael_Guerreiro
Diretamente pelo browser funciona, ele faz download quando não é imagem.
Na verdade a diferença está no <a> em cima…
Como que é isso: “desde que mantidos os headers”?
G
garcia-jj
Faça assim… altere o retorno do métod para Download (pacote br.com.caelum.vraptor…Download).
O conteudo do método ficará algo assim:
byte[] content = Files.toByteArray(meuArquivo);
return new ByteArrayDownload(content , "image/jpg", file.getName());
A classe Files vem do Guava: com.google.commons.base.io.Files (se não me engano).
Rafael_Guerreiro
Eu fiz isso… Sem sucesso ainda…
Se eu colocar direto no browser, funciona… Pelo plugin não…
G
garcia-jj
Isso é muito estranho, deveria funcionar. Tentei procurar pelo código fonte para ver qual o comportamento dessa lib, mas não achei. Pelo visto não é opensource.
Uma sugestão é tentar alterar a URL de acesso a tua imagem para colocar a extensão .jpg. Isso porque talvez essa lib procure pelas extensões para descobrir se é uma imagem.
Se não funcionar sugiro usar outra lib.
G
garcia-jj
Isso é muito estranho, deveria funcionar. Tentei procurar pelo código fonte para ver qual o comportamento dessa lib, mas não achei. Pelo visto não é opensource.
Uma sugestão é tentar alterar a URL de acesso a tua imagem para colocar a extensão .jpg. Isso porque talvez essa lib procure pelas extensões para descobrir se é uma imagem.
Se não funcionar sugiro usar outra lib.
Rafael_Guerreiro
Garcia! Vc salvou o dia!!!
era exatamente isso. Eu precisava informar a extensao para o ShadowBox.
Eu não faço nada com ela no VRaptor…
Obrigado.
-Edit-
Ele agora está funcionando, mas não consigo exibir vídeos (.wmv). Ele abre certinho e na hora de dar play, não funciona…
Sabe o que pode ser? Eu vou tentar enviar um File para a view…
-Edit-
Mesmo com File, não foi possível ver o vídeo…
Rafael_Guerreiro
Alguma ideia do que pode ser?
Rafael_Guerreiro
UP… Ainda estou com esse problema de fazer um vídeo aparecer na tela… Ele está com a extensão certinho… só q não carrega o vídeo…
G
garcia-jj
Se você acessar ele direto funciona? Não é algum bloqueio do navegador?
Tente criar uma página somente HTML com o vídeo para ver se funciona.
Rafael_Guerreiro
Uma página linkando diretamente no vídeo, funciona.
Não acho q seja o navegador, pois testei o de cima no mesmo navegador…
G
garcia-jj
Ahh, mas peraí… tu estás usando o mesmo código para exibir imagens e videos? Assim não vai funcionar porque vídeos possuem outro content-type.
O content-type correto para este formato é video/x-ms-wmv.
Talvez o ideal seja você procurar por alguma lib que busque o content-type pelo tipo de arquivo, semelhante ao comando file do Linux.
Rafael_Guerreiro
Sim, estou… Mas o contentType eu gravo em uma variavel. Que eu recebo do UploadedFile… Então na hora de mostrar um vídeo, eu passo “video/x-ms-wmv” qdo é imagem eu passo “image/jpeg”…
G
garcia-jj
Hmm, você está fazendo certo.
Mas o que acontece? O video nem aparece, ou aparece mas não executa? Tu estás chamando ele por aquele Javascript usando na imagem?
Rafael_Guerreiro
Sim, eu uso aquele plugin…
O que acontece é que ele carrega o vídeo, dai aparece um “Pronto” e quando da play ele nao toca…