Qual a mehor forma de salvar a imagem?

12 respostas
wladyband

Estou em duvida se tento salvar a imagem em disco ou no banco.

Qual seria a melhor opção?

12 Respostas

ViniGodoy

wladyband:
Estou em duvida se tento salvar a imagem em disco ou no banco.

Qual seria a melhor opção?

Geralmente é em disco. Além de ser consideravelmente mais barato, é mais fácil para transformar em url, para fazer backup, para carregar e restaurar, converter, usar outros programas sobre ela, etc.

javaflex

Depende das políticas de segurança, padrões da empresa, requisitos, etc.

Geralmente guardar em banco tem a vantagem de manter integridade com demais informações do banco, backup/restore único, mesmo tipo de profissional pra administrar, etc. Sendo decidido guardar em banco, é altamente recomendável criar tabelas de blobs em tablespace separado em outra unidade de armazenamento.

Únicas vantagens que vejo de gravar diretamente em file system é barateamento e facilidade de desenvolvimento como já foi falado pelo colega acima.

A

Outros fatores a considerar: quantidade e tamanho das imagens.

wladyband

Eu não sabia que era tão difícil implementar FileUpload para salvar em disco com integração com o banco, eu comprei um livro, porém esse livro era de 2008 com JSF 1.5 e não tive nenhum resultado, eu posto minhas duvidas nos fóruns da vida e nenhum resultado, não o que fazer pelo amor de Deus.

Eu já fiz em PHP e foi bem simples, mas em Java estou quebrando mesmo a cabeça.

pfk66

faz em PHP, o usuário não vai notar diferença mesmo…

javaflex

wladyband:
Eu não sabia que era tão difícil implementar FileUpload para salvar em disco com integração com o banco, eu comprei um livro, porém esse livro era de 2008 com JSF 1.5 e não tive nenhum resultado, eu posto minhas duvidas nos fóruns da vida e nenhum resultado, não o que fazer pelo amor de Deus.

Eu já fiz em PHP e foi bem simples, mas em Java estou quebrando mesmo a cabeça.


Ficou difícil por voce estar usando JSF. Nao use JSF, só vai te atrapalhar, a nao ser que você faça doutorado em JSF pra saber usa-lo bem. Eu pelo menos não tenho a menor capacidade de aprender plenamente JSF.

Mesmo com Java voce pode fazer em HTML puro similar ao que se faz em PHP. Simplicidade é genial.

Só pra ilustrar segue um exemplo usando o Spring MVC: http://www.pablocantero.com/blog/2010/09/29/upload-com-spring-mvc/

Logicamente mesmo com a solucao similar no lado client, PHP ainda é mais simples que Java. Tambem pode fazer sem framework nenhum, usando diretamente servlet, mas profissionalmente não é usado, é mais para aprendizado.

Questao do banco é um assunto a parte. Resolva primeiro o upload para a memoria do webserver. Ou se tiver misturando os problemas, explique mais diretamente o problema pois JSF nao tem relacao com gravar no banco.

wladyband

javaflex:
wladyband:
Eu não sabia que era tão difícil implementar FileUpload para salvar em disco com integração com o banco, eu comprei um livro, porém esse livro era de 2008 com JSF 1.5 e não tive nenhum resultado, eu posto minhas duvidas nos fóruns da vida e nenhum resultado, não o que fazer pelo amor de Deus.

Eu já fiz em PHP e foi bem simples, mas em Java estou quebrando mesmo a cabeça.


Ficou difícil por voce estar usando JSF. Nao use JSF, só vai te atrapalhar, a nao ser que você faça doutorado em JSF pra saber usa-lo bem. Eu pelo menos não tenho a menor capacidade de aprender plenamente JSF.

Mesmo com Java voce pode fazer em HTML puro similar ao que se faz em PHP. Simplicidade é genial.

Só pra ilustrar segue um exemplo usando o Spring MVC: http://www.pablocantero.com/blog/2010/09/29/upload-com-spring-mvc/

Logicamente mesmo com a solucao similar no lado client, PHP ainda é mais simples que Java. Tambem pode fazer sem framework nenhum, usando diretamente servlet, mas profissionalmente não é usado, é mais para aprendizado.

Questao do banco é um assunto a parte. Resolva primeiro o upload para a memoria do webserver. Ou se tiver misturando os problemas, explique mais diretamente o problema pois JSF nao tem relacao com gravar no banco.

O que você acha do FrameWorks Vraptor?

javaflex

wladyband:
javaflex:
wladyband:
Eu não sabia que era tão difícil implementar FileUpload para salvar em disco com integração com o banco, eu comprei um livro, porém esse livro era de 2008 com JSF 1.5 e não tive nenhum resultado, eu posto minhas duvidas nos fóruns da vida e nenhum resultado, não o que fazer pelo amor de Deus.

Eu já fiz em PHP e foi bem simples, mas em Java estou quebrando mesmo a cabeça.


Ficou difícil por voce estar usando JSF. Nao use JSF, só vai te atrapalhar, a nao ser que você faça doutorado em JSF pra saber usa-lo bem. Eu pelo menos não tenho a menor capacidade de aprender plenamente JSF.

Mesmo com Java voce pode fazer em HTML puro similar ao que se faz em PHP. Simplicidade é genial.

Só pra ilustrar segue um exemplo usando o Spring MVC: http://www.pablocantero.com/blog/2010/09/29/upload-com-spring-mvc/

Logicamente mesmo com a solucao similar no lado client, PHP ainda é mais simples que Java. Tambem pode fazer sem framework nenhum, usando diretamente servlet, mas profissionalmente não é usado, é mais para aprendizado.

Questao do banco é um assunto a parte. Resolva primeiro o upload para a memoria do webserver. Ou se tiver misturando os problemas, explique mais diretamente o problema pois JSF nao tem relacao com gravar no banco.

O que você acha do FrameWorks Vraptor?


Muito bom, segue a mesma linha do SpringMVC. Vantagem do Spring é ser muito mais usado mundialmente.

wladyband

javaflex:
wladyband:
Eu não sabia que era tão difícil implementar FileUpload para salvar em disco com integração com o banco, eu comprei um livro, porém esse livro era de 2008 com JSF 1.5 e não tive nenhum resultado, eu posto minhas duvidas nos fóruns da vida e nenhum resultado, não o que fazer pelo amor de Deus.

Eu já fiz em PHP e foi bem simples, mas em Java estou quebrando mesmo a cabeça.


Ficou difícil por voce estar usando JSF. Nao use JSF, só vai te atrapalhar, a nao ser que você faça doutorado em JSF pra saber usa-lo bem. Eu pelo menos não tenho a menor capacidade de aprender plenamente JSF.

Mesmo com Java voce pode fazer em HTML puro similar ao que se faz em PHP. Simplicidade é genial.

Só pra ilustrar segue um exemplo usando o Spring MVC: http://www.pablocantero.com/blog/2010/09/29/upload-com-spring-mvc/

Logicamente mesmo com a solucao similar no lado client, PHP ainda é mais simples que Java. Tambem pode fazer sem framework nenhum, usando diretamente servlet, mas profissionalmente não é usado, é mais para aprendizado.

Questao do banco é um assunto a parte. Resolva primeiro o upload para a memoria do webserver. Ou se tiver misturando os problemas, explique mais diretamente o problema pois JSF nao tem relacao com gravar no banco.

Quer dizer que não se pode fazer upload com JSF ? muito extranho isso.
É um recurso básico necessário para o modelo Web hoje.

Posso está reclamando por não saber usar a abordagem de deixar as imagens no disco e gravar no banco apenas o caminho do local da imagem, mas deve ser algo simples.

É muito fácil dizer que é difícil de fazer quando não se sabe fazer, qualquer um pode dizer que é difícil.

javaflex

wladyband:
javaflex:
wladyband:
Eu não sabia que era tão difícil implementar FileUpload para salvar em disco com integração com o banco, eu comprei um livro, porém esse livro era de 2008 com JSF 1.5 e não tive nenhum resultado, eu posto minhas duvidas nos fóruns da vida e nenhum resultado, não o que fazer pelo amor de Deus.

Eu já fiz em PHP e foi bem simples, mas em Java estou quebrando mesmo a cabeça.


Ficou difícil por voce estar usando JSF. Nao use JSF, só vai te atrapalhar, a nao ser que você faça doutorado em JSF pra saber usa-lo bem. Eu pelo menos não tenho a menor capacidade de aprender plenamente JSF.

Mesmo com Java voce pode fazer em HTML puro similar ao que se faz em PHP. Simplicidade é genial.

Só pra ilustrar segue um exemplo usando o Spring MVC: http://www.pablocantero.com/blog/2010/09/29/upload-com-spring-mvc/

Logicamente mesmo com a solucao similar no lado client, PHP ainda é mais simples que Java. Tambem pode fazer sem framework nenhum, usando diretamente servlet, mas profissionalmente não é usado, é mais para aprendizado.

Questao do banco é um assunto a parte. Resolva primeiro o upload para a memoria do webserver. Ou se tiver misturando os problemas, explique mais diretamente o problema pois JSF nao tem relacao com gravar no banco.

Quer dizer que não se pode fazer upload com JSF ? muito extranho isso.
É um recurso básico necessário para o modelo Web hoje.

Posso está reclamando por não saber usar a abordagem de deixar as imagens no disco e gravar no banco apenas o caminho do local da imagem, mas deve ser algo simples.

É muito fácil dizer que é difícil de fazer quando não se sabe fazer, qualquer um pode dizer que é difícil.


Se a pessoa tiver disposta a gastar tempo e energia no mundo particular do JSF, logicamente consegue fazer e evoluir. Pra mim seria só um obstaculo desnecessario e overhead para o resultado.

Sobre guardar no banco, é outro assunto separado, nem envolve discussão sobre JSF. O que você quer resolver neste momento, envio da imagem para o webserver usando JSF ou persistir imagem no banco? Se for os dois, resolve um problema de cada vez. Guardar imagem no banco é fácil, você só precisa nos informar o que está usando para a persistência, se está usando framework ou direto JDBC.

Aqui tem um exemplo sem usar frameworks, mas serve como base: http://javaandj2eetutor.blogspot.com.br/2013/12/upload-image-file-into-database-using_3150.html

javaflex

wladyband:
javaflex:
wladyband:
javaflex:
wladyband:
Eu não sabia que era tão difícil implementar FileUpload para salvar em disco com integração com o banco, eu comprei um livro, porém esse livro era de 2008 com JSF 1.5 e não tive nenhum resultado, eu posto minhas duvidas nos fóruns da vida e nenhum resultado, não o que fazer pelo amor de Deus.

Eu já fiz em PHP e foi bem simples, mas em Java estou quebrando mesmo a cabeça.


Ficou difícil por voce estar usando JSF. Nao use JSF, só vai te atrapalhar, a nao ser que você faça doutorado em JSF pra saber usa-lo bem. Eu pelo menos não tenho a menor capacidade de aprender plenamente JSF.

Mesmo com Java voce pode fazer em HTML puro similar ao que se faz em PHP. Simplicidade é genial.

Só pra ilustrar segue um exemplo usando o Spring MVC: http://www.pablocantero.com/blog/2010/09/29/upload-com-spring-mvc/

Logicamente mesmo com a solucao similar no lado client, PHP ainda é mais simples que Java. Tambem pode fazer sem framework nenhum, usando diretamente servlet, mas profissionalmente não é usado, é mais para aprendizado.

Questao do banco é um assunto a parte. Resolva primeiro o upload para a memoria do webserver. Ou se tiver misturando os problemas, explique mais diretamente o problema pois JSF nao tem relacao com gravar no banco.

Quer dizer que não se pode fazer upload com JSF ? muito extranho isso.
É um recurso básico necessário para o modelo Web hoje.

Posso está reclamando por não saber usar a abordagem de deixar as imagens no disco e gravar no banco apenas o caminho do local da imagem, mas deve ser algo simples.

É muito fácil dizer que é difícil de fazer quando não se sabe fazer, qualquer um pode dizer que é difícil.


Se a pessoa tiver disposta a gastar tempo e energia no mundo particular do JSF, logicamente consegue fazer e evoluir. Pra mim seria só um obstaculo desnecessario e overhead para o resultado.

Sobre guardar no banco, é outro assunto separado, nem envolve discussão sobre JSF. O que você quer resolver neste momento, envio da imagem para o webserver usando JSF ou persistir imagem no banco? Se for os dois, resolve um problema de cada vez. Guardar imagem no banco é fácil, você só precisa nos informar o que está usando para a persistência, se está usando framework ou direto JDBC.

Aqui tem um exemplo sem usar frameworks, mas serve como base: http://javaandj2eetutor.blogspot.com.br/2013/12/upload-image-file-into-database-using_3150.html

Esta salvando perfeitamente no banco esse projeto no gitHub, mas o que eu queria mesmo é a abordagem de deixar a imagem no disco e armazenar no banco apenas o caminho das imagens.

https://github.com/wladyband/Produtos/tree/master/Produtos


Se você pesquisar vai encontrar exemplos como esse: http://stackoverflow.com/questions/9515365/how-to-upload-a-file-using-jsf-primefaces (Veja o método fileUpload)

O caminho você pode adotar um caminho padrão como no exemplo, ou gravar numa tabela de configuração no banco. O nome do arquivo logicamente num campo junto a tabela relacionada a informação.

J

quando a imagem é pequena, eu custumo codifica-la em base64 e salvar como string. Se for grande, guarde apenas a url.

Criado 20 de maio de 2015
Ultima resposta 12 de jun. de 2015
Respostas 12
Participantes 6