Author |
Message |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/12/2010 21:03:21
|
Jardel
![[Avatar]](/images/avatar/5d79099fcdf499f12b79770834c0164a.jpg)
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!
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/12/2010 18:12:34
|
ricardojlrufino
![[Avatar]](/images/avatar/a760880003e7ddedfef56acb3b09697f.jpg)
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
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2011 13:12:31
|
Jardel
![[Avatar]](/images/avatar/5d79099fcdf499f12b79770834c0164a.jpg)
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,
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2011 13:44:29
|
ricardojlrufino
![[Avatar]](/images/avatar/a760880003e7ddedfef56acb3b09697f.jpg)
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
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2011 18:55:12
|
Jardel
![[Avatar]](/images/avatar/5d79099fcdf499f12b79770834c0164a.jpg)
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
|
|
 |
|