[RESOLVIDO] Exibir Imagens de diretório fora do contexto da aplicação! JSF 2 + Primefaces
19 respostas
D
dioggofr
Pessoal é o seguinte, eu consigo fazer upload e salvar imagens tanto no banco como em um diretório no build da minha aplicação,
mas tive alguns problemas com Lentidão salvando no banco e uns problemas com deploys feitos sem cuidado salvando no build.!
Agora estou mudando a aplicação para salvar em um diretório que não apague as imagens no deploy, já consigo salvar tudo direitnho, só gostaria de saber
Existe uma forma de Recuperar essas imagens e exibillas na tela pegando direto dessa pasta ou terei que criar um sistema de backup?
Segue o código da forma como estou salvando as imagens!
Se alguém puder ajudar com isso, ou indicar uma solução mais viável (Que acredito que exista) agradeço, por enquanto só estou pesquisando sobre o assunto!
Não sei dizer com outros servidores, mas no glassfish, é possivel criar um servidor virtual onde voce indica a pasta onde estão as imagens, tornando-as acessiveis direto pelo jsf por exemplo apenas colocando:
mais tarde voltarei a mexer nisso e se encontrar uma solução postarei aqui!
abrc!
D
dioggofr
Realmente não consegui acessar o conteúdo dentro do diretório no tomcat, encontrei alguns exemplos de como criar mas não obtive sucesso!
Sempre me retorna um 404!!
Se alguém tiver conhecimento sobre o tomcat e puder me ajudar nisso agradeço!
abrç!
T
tarlix
Fala ae cara!
No tomcat nunca fiz, mas, pelo q vc mostrou o seu docbase nao seria apenas “c:/” e o path: “imagesBC”?
Vc seguiu algum tutorial q eu possa dar uma olhada?
Vou testar aqui, vê se funciona… Qlqr coisa te falo.
1 - Vá na pasta “C:\Program Files\Apache Software Foundation\Tomcat 7.0\conf\Catalina\localhost” (ou onde voce instalou o seu tomcat)
2 - Crie um arquivo chamado: seu contextpath#nomedodiretorioquevocedeseja.xml
3 - Dentro deste arquivo coloque:
4 - Reinicie o tomcat.
Entendendo:
o nome do arquivo será o "diretorio na url"
Por exemplo, sendo o nome do arquivo ProjectTomCat#imagens#testando.xml
Para acessar o diretorio será: localhost:8080/ProjectTomCat/imagens/testando/nome-do-arquivo-a-ser-acessado-.extesao
dentro deste arquivo, voce colocará o e no docBase o caminho para esta pasta. no exemplo, a minha seria f:imagens.
Sendo que nesta pasta contem o arquivo tarlix.jpg. No jsf ficaria:
<p:graphicImage value="imagens/tarlix.jpg" />
Qlqr duvida, posta ae. Espero que funcione.
Abrcs. =D
D
dioggofr
Cara funcionou!! Ja havia feito um exemplo parecido mas faltava o meu contexto antes do nome do diretório!!
Muito Obrigado mesmo!!
T
tarlix
Opa! Que bom, cara.
Acho que vc consegue utilizar isso para fazer o upload das imagens.
Mais uma coisa, só marca o topico como resolvido.
[RESOLVIDO]
Abrcs.
A
andreluiz_sh
Olá tarlix,
eu estou usando o glassfish 3.1.2.2
e estou fazendo exatametne o que vc propos no seu post.
porem não esta funcionando para acessar as imagens fora do contexto.
o meu codigo esta assim.
este é somente um exemplo para depois aplicar no projeto.
index.xhtml
<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"xmlns:h="http://java.sun.com/jsf/html"><h:head><title>Facelet Title</title></h:head><h:body><h:form><h:graphicImagevalue="/img/1367865413152.png"/></h:form></h:body></html>
glassfish-web.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd"><glassfish-web-apperror-url=""><context-root>/</context-root><class-loaderdelegate="true"/><jsp-config><propertyname="keepgenerated"value="true"><description>Keepacopyofthegeneratedservletclassjavacode.</description></property></jsp-config><parameter-encodingdefault-charset="UTF-8"/><propertyname="alternatedocroot_1"value="from=/img/* dir=c:\img\photocam\"/></glassfish-web-app>
acredito que esteja tudo correto. porém não funciona
aparece a imagem como não encontrada.
valeu
T
tarlix
Cara, as suas pastas estão assim:
C:\img\photocam\img<fotos>?’
outra coisa, agora não consigo testar, mas coloca o h:graphic value sem o / no começo… só pra testar…
J
JJjava
tarlix:
Cara, as suas pastas estão assim:
C:\img\photocam\img<fotos>?’
outra coisa, agora não consigo testar, mas coloca o h:graphic value sem o / no começo… só pra testar…
Olá,
no glassfish 4.1 o arquivo glassfish-web.xml mudou de nome ? ñ consigo achar…
A
anderson.bonavides
Olá Tarlix, estou tendo o mesmo problema e mesmo seguindo suas dicas ainda não consegui resolver. Gostaria de utilizar na configuração do próprio projeto, pois dentro da pasta META-INF já contem o arquivo context.xml o qual eu posso referenciar as minhas imagens. Você conseguiu resolver também desta forma?
Grato!
T
tarlix
E ai, tudo bem?
Anderson, faz muito tempo que nao preciso configurar essas coisas no tomcat ou qualquer outro servidor. No meta-inf nunca fiz e não faço ideia de como seja. Porém, voce pode tentar fazer do mesmo jeito que seria feito diretamente no tomcat.
Pelo context que achei em outra pergunta que voce fez, nao consegui entender o que está querendo: Voce tá querendo configurar uma pasta de dentro do proprio projeto ou uma pasta externa? pq a questao no topico é uma pasta externa.
No exemplo que postei como solução do tópico, tem um site que segui para fazer funcionar, acredito que voce tenha feito alguma configuração errada.
A
anderson.bonavides
Olá amigo Tarlix, tudo bem sim.
Bem sobre a configuração ela é externa, porém eu queria configurar no meu projeto de desenvolvimento para não ter que testar apenas em produção. Sobre a pasta ela é realmente fora do contexto em um diretório externo da aplicação.
A
anderson.bonavides
Tentei também carregar a imagem através do BLOB mas também não consigo. Nesta solução a minha aplicação fica assim:
Cara, dessa forma utilizando Blob nao sei o que pode ser. Tem que ver se os bytes estão certos.
O que é essa variavel “arquivo”? qual é o tipo? faz assim: arquivo.getBytes()
Me fala como voce tentou configurar uma pasta externa. Qual nome do arquivo que voce colocou no meta-inf e o conteudo dele.
Por ultimo, mesmo voce estando desenvolvendo localmente, voce pode fazer a configuração no seu tomcat que está utilizando para desenvolver. Normal isso.
A
anderson.bonavides
arquivo já é o um array de byte, apnas não referenciei o nome correto. rsrsrs