[Logo] Mentawai Forum - Mentawai Web Framework
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 

Forum Read-Only! Check the new site and forum here!

Recuperando um bytea e mostrando na displaytag[Resolvido]  XML
Forum Index -> Comentários Gerais
Author Message
Jardel


[Avatar]

Joined: 19/10/2009 23:33:57
Messages: 28
Offline

Pessoal, to apanhando disso aqui... (Pegar um bytea do postgres e mostrar na displaytag)

Tinha feito pegando o caminho de um diretorio e exibindo a imagem, mas queria saber como receber os byte[] do banco e mostrar na jsp.

Alguem tem um exemplo pra me ajudar?

Obrigado!
[Email] [WWW] [Yahoo!] [MSN]
ricardojlrufino


[Avatar]

Joined: 30/03/2008 20:07:28
Messages: 227
Location: Teresina PI
Offline

vc sabe que a 1 opção é a melhor né ?

particularmente nunca implementei imagens no banco, mais vou da uma pesquisada.

Ricardo JL Rufino <ricardo.jl.rufino@gmail.com> < UNYK > :: Q4Soft :: Teresina - PI
"Existe apenas um bem, o saber, e apenas um mal, a ignorância" - Sócrates
"Devemos julgar um homem mais pelas suas perguntas que pelas respostas" - Voltaire




Mentawai Developer

[WWW] [MSN]
Jardel


[Avatar]

Joined: 19/10/2009 23:33:57
Messages: 28
Offline

Então Ricardo, a primeira é melhor sim, só que no meu caso o usuário precisa escolher uma figura do item escolhido(que esteja em qqer lugar) e quando a aplicação rodar a foto tem que ser carregada via web, de qqer lugar.

A solução que encontrei foi a seguinte:

Objeto:
Code:
 private byte[] arv_foto;
 private String arv_foto_nome; 
 



------------------------------Inserindo no banco---------------------------------
Action:
Code:
 FileItem file_foto = (FileItem) input.getValue("arv_foto");
 nome = file_foto.getName();
 int pos = nome.lastIndexOf("\\");
 nome = nome.substring(pos + 1);
 

Code:
 pojoArvore.setArv_foto(file_foto.get()); //Aqui eu guardo a foto no 
 banco(bytea)
 pojoArvore.setArv_foto_nome(nome); //aqui eu pego o nome da imagem
 


------------------------------Mostrando---------------------------------
//Para mostrar a imagem, em um certo momento eu carrego as imagem para o meu contextPath:

Code:
 public void gerarImagens() {
         List<PojoArvore> listArvores = DaoArvore.getInstance().readByExample(null);
         String strRealPath = org.mentawai.core.ApplicationManager.getRealPath();
         for (Object object : listArvores) {
             PojoArvore objArvore = (PojoArvore) object;
             if (objArvore.getArv_foto() != null) {
                 String strFullPath = strRealPath.replace("\\", "/") + ArvoreShowFormAction.DEFAULT_DIR + objArvore.getArv_foto_nome();
                 System.out.println(strFullPath);
                 File objFile = new File(strFullPath);
                 if (!objFile.exists()) {
                     try {
                         FileOutputStream objFileOutStream = new FileOutputStream(strFullPath);
                         objFileOutStream.write(objArvore.getArv_foto());
                     } catch (FileNotFoundException e) {
                         e.printStackTrace();
                     } catch (IOException e) {
                         e.printStackTrace();
                     }
                 }
             }
         }
     }
 



-------------------------------Na displaytag---------------------------------

Code:
 <display:column title="Foto" >
       <a href='${pageContext.request.contextPath}/Arvore/Ampliar.do?arv_id=${row.arv_id}'>
       <img src="${pageContext.request.contextPath}/images/arvores/${row.arv_foto_nome}" align="right" width="180" height="100"                                         name="fotoImage" alt="foto" title="clique para ampliar"                                                                                                />
        </a>                                           
 </display:column>
 



//Fica melhor se colocar no decorator fazendo o download da imagen do banco para o contextpath, uma a uma.


Abraço,
[Email] [WWW] [Yahoo!] [MSN]
ricardojlrufino


[Avatar]

Joined: 30/03/2008 20:07:28
Messages: 227
Location: Teresina PI
Offline

Seguinte existe algum motivo para guardar as imagens no banco, é um requisito da sua aplicação ? Se não, vc faz da seguinte maneira..

1. Quando você fazer o upload das fotos, ao invés de salvar no banco vc salva em uma pasta uploads (que vai ficar dentro da web)

vc salva em uma pasta usando:

Code:
FileItem arquivo = (FileItem) input.getValue("arv_foto");
 File arquivoDisco = new File(ApplicationManager.getRealPath() + SEP + caminhoRelativo); // onde vc quer salvar...
 
 arquivoDisco.getParentFile().mkdirs(); // Criar diretorio, caso ele não exita.
 arquivo.write(arquivoDisco);	
 		
 // Colocar o caminho no padrão de URL (Necessário para o Windows)
 caminhoRelativo = caminhoRelativo.replaceAll("\\\\", "/");
 
 
 Foto foto = new Foto()
 foto.setCaminhoImagem(caminhoRelativo);
 
 dao.save(foto);
 
 






2. Seu Bean vai ter:
Foto..
String nome;
String caminhoImagem;

3. Para listar as imagens, ao invés de vc listar do sistema de arquivos
vc lista do banco
Code:
  List<Foto> fotos = FotoDao().listar();
   ouput.setValue("fotos", fotos);


na JSP..., dentro da displaytag...

Code:
<img src="${pageContext.request.contextPath}/${row.foto.caminhoImagem}" align="right" width="180" height="100"
   

>

Ricardo JL Rufino <ricardo.jl.rufino@gmail.com> < UNYK > :: Q4Soft :: Teresina - PI
"Existe apenas um bem, o saber, e apenas um mal, a ignorância" - Sócrates
"Devemos julgar um homem mais pelas suas perguntas que pelas respostas" - Voltaire




Mentawai Developer

[WWW] [MSN]
Jardel


[Avatar]

Joined: 19/10/2009 23:33:57
Messages: 28
Offline

Legal Eduardo! Não tinha pensado nisso.

É um requisito, mas pode ser mudado sim.


Valeu
[Email] [WWW] [Yahoo!] [MSN]
 
Forum Index -> Comentários Gerais
Go to:   
Powered by JForum 2.1.6 © JForum Team