+1

No caso de upload de imagem é melhor armazena-lá direto na bd ou copiar p/ um diretório deixando na bd só o nome?

criado por Leopoldo R. de P. Z. Moreira em 10/09/2003 1:21pm
Nenhuma descrição foi enviada.

Lista de Respostas:

0
11/09/2003 9:50pm
(~13 anos atrás)
... respondeu:
Você é quem sabe. Eu particularmente deixo em uma pasta, e só fica a URL no bd. Eu acho mais prático, e mais seguro, para nao acabar perdendo varias imagens sem querer.

0
11/09/2003 10:43pm
(~13 anos atrás)
Alessander Thomaz respondeu:
Depende muito da aplicacão.
Geralmente é usado guardar somente o endereço da imagem, mas nesse caso tem que tomar cuidados para uma imagem nao sobrepor a outra se os nomes forem iguais.

Se o controle de diretórios for mal feito, pode ter problemas sérios de segurança e pessoas sem autorização podem copiar os arquivos.
Eu geralmente uso nesses casos dois campos no bd, um com o nome original e outro com um md5 do nome da imagem + um código (para garantir que é unico), renomeio o arquivo para esse md5 dificultando alguem de descobrir onde existe um arquivo.

Na hora de enviar a imagem, envio com o nome original gravado no banco.


Mas em algumas aplicações é interessante ter em banco, dizem que a última versão do informix por exemplo é capaz de comparar imagens semelhantes cadastradas no banco de dados, bancos poderosos podem fazer milagres as vezes, depende muito do uso.


Dizem que guardar em banco consome muita memória, aumenta a base etc, mas vejo exemplos como um recente de transformar um sistema de arquivos usando o postgress, o que nos faz pensar que talvez não seja tão má idéia ter no banco de dados.

É tudo questão de necessidade, veja as opções e escolha a que for melhor (esqueci de dizer antes, mas é muito usado guardar somente o endereço pois é mais fácil de trabalhar assim, isso não é tão verdade)

0
12/09/2003 11:42am
(~13 anos atrás)
André Taiar respondeu:
Sem dúvida, é muito melhor colocar as imagens separadas num diretório e fazer apenas as devidas referências no BD.

O desempenho da aplicação é perceptivamente mais alto..

0
12/09/2003 4:57pm
(~13 anos atrás)
Diogo Gomes respondeu:
Por ser ainda novo em PHP nunca fiz nada assim ainda, mas eu utilizaria colocar apenas os endereços das imagens no DB, eu acho essa a melhor opção numa aplicação simples.

0
12/09/2003 10:31pm
(~13 anos atrás)
A única vantagem que vejo em ter um arquivo no banco de dados é a segurança... Como um colega citou, por algum problema de sobreposição de arquivos ou mau controle de diretórios e permissões você pode perder arquivos.. já em banco de dados, só se o registro for deletado!

0
12/09/2003 11:37pm
(~13 anos atrás)
Alessander Thomaz respondeu:
A idéia de ganho de desempenho não sei se é tão verdade.
Depende de muitos fatores, máquina, servidor etc.

Muitos sistemas de GED utilizam banco de dados para fazer pesquisas completas nos arquivos, mas é claro, é apenas um exemplo de aplicação. No geral usam no banco, mas nunca acompanhei um teste de comparação, alguém conhece um?

0
13/09/2003 7:18pm
(~13 anos atrás)
Roberto Francisco respondeu:
Olá amigos,
Depois de também analisar essa questão, optei somente em gravar a imagem em diretório e as informações em xml. Para o caso de segurança, no meu caso somente o admin é que irá colocar as imagens, utilizei rotinas FTP do PHP para mudar a permissão, gravar e voltar permissão.
Dá um trabalho utilizar parse xml e arrays, mas é um exercicio bastante interessante e a vantagem é que se tornou portável e posso migrar uma galeria para qualquer servidor mantendo a funcionalidade (html/javascript/imagens do diretório). Se quiserem conferir o resultado, que ainda está incompleto: http://www.conflito.com.br/kelson/album.php
Um abraço
BobFrank

0
14/09/2003 8:20am
(~13 anos atrás)
Miguel Lohan respondeu:
Apenas uma sugestão:

Eu cuido de um site onde existem 80 colunistas e mais quase 200 colaboradores.

Programado todo o portal ficou quase impossível de administrar, o antigo webmaster saiu e eu entrei na jogada:

Reformulei todo o site e criei apenas duas páginas:

colunista.php
colaborador.php

Na area administrativa eu incluo o colunista e o colaborador, sendo que: O colunista deve ter um curriculo e uma foto, no formulario recebo estes dados, jpg para foto e htm para ao curriculo. A imagem eu gravo o nome dela no bd, atribuindo um nome que é formado assim:

ID do colunista+data+hora.jpg salvo no diretorio colunistas/fotos e no bd armazendo apenas o nome.

Na minha página colunista.php eu chamo

.. colunista.php?id=815015

e ela já pega a foto do colunista, o curriculo, a relacao de artigos dele gravados no bd e monta bonitinho. Eu tentei fazer isso gravando no bd a foto mais ficou uma confusão danada.

Abraços

0
14/09/2003 10:09am
(~13 anos atrás)
André Taiar respondeu:
Esse exemplo (acima) é o que julgo melhor ...

Não há maneiras do arquivo ser sobrescrito, já que ele é salvo de acordo com os dados obtidos no cadastro do usuário ...

0
14/09/2003 1:15pm
(~13 anos atrás)
João K. respondeu:
A melhor solução é gravar em algum diretório, e de preferência que não seja acessível diretamente pelo navegador. Para não haver bandwidth theft, roubo de banda com alguém linkando diretamente para imagem.

Eu uso próprio php prara ler o arquivo e enviar a imagem para browser, utilizando a função header(). Vantagens é poder fazer uma verificação prévia de segurança para ter certeza que o usuário tem autorização para ver a imagem.

0
16/09/2003 6:02am
(~13 anos atrás)
Lyma respondeu:
A depender do DB usado pode ficar extremamente lento, principalmente se o mesmo fica em outro dominio/servidor.
Uso no PhpLojaFacil somente os links no banco e as imagens em uma pasta.

0
16/09/2003 7:56am
(~13 anos atrás)
Olavo Alexandrino respondeu:
Na minha opnião é muito mais plausível apenas guardar o nome do arquivo no BD. Pois a aplicação ficará mais rápida e uma coisa mais.

ESPAÇO !!!

Imagine um site de fotos de baladas, desses que existem por aí!!

Vamos supor que seja limitado um tamanho de 40 kb por imagem (apesar que vemos muito mais do que isso)...imagine uma festa com 100 fotos...
temos 4000 Kb em uma só festa...imagine 10 festas!!!!

Um amigo fez um sistema baseade em BD e só de imagens seu MySQL tem 90 Mb!! A performace desse BD é bem ruim se fosse comparado a sistemas em DIR não? Até mesmo pq...quanto pode comportar um campo para files?

Sobre o nome de arquivos gravados em cima de outro...eu resolvi esse problema desenvolvendo uma classe...nunca (até pelo menos até agora)...vi um file regravado!!

Sobre o problema de listar o dir de imagens o próprio server pode proibir esse acesso...

Sobre permissões, como o user "apache" ou "httpd" é o user que faz o upload apenas ele pode exclui-la...nem FTP pode. Estamos em Linux!! E também apenas ele pode acessar esse DIR via console...

Bem essa é minha opnião...

Vide Classe em:

http://www.phpclasses.org/browse.html/package/1293.html


0
16/09/2003 5:43pm
(~13 anos atrás)
Diogo Gomes respondeu:
Existe um outro problema, e o backup desse banco de imagens???
No servidor que eu hospedo o tamanho do MySQl padrão é 50MB, posso aumentar é claro, mas e custo, seria mais barato aumentar o espaço em disco para as páginas.

0
17/09/2003 6:31am
(~13 anos atrás)
Wonder Alexandre respondeu:
a melhor solução e sem duvida colocar as imagem em um diretorio e fazer uma referencia no bd

0
23/09/2003 12:45pm
(~13 anos atrás)
Fernando Pimenta respondeu:
arrumei um script e testei salvar figuras no MySql em campos BLOB... a queda na velocidade é muito grande, pois tem que puxar do banco e depois montar os dados em figura no php... seria bom por só figuras pequenas e muito sigilosas

0
27/09/2003 1:39pm
(~13 anos atrás)
Roberto Francisco respondeu:
Se for o caso de uma grande aplicação, como a TV Globo (he!he!), então de uma olhada neste DB pos relacional:
http://cache.intersys.com/cache/edbms.html

0
16/12/2003 1:04pm
(~13 anos atrás)
Alguém poderia me dizer então, como seria para armazenar a figura no Banco de Dados?

0
23/03/2005 2:44pm
(~11 anos atrás)
Vitor Hugo respondeu:
Amigo,

o ideal é usar o banco de dados para imagens menores, como por exemplo um ThumbNail e as imagens grandes em Diretorios.

Nova Resposta:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)