Estrutura de banco de dados para imagem [RESOLVIDO]

1. Estrutura de banco de dados para imagem [RESOLVIDO]

André Luis Talon
a.talon

(usa Ubuntu)

Enviado em 31/12/2014 - 19:40h

Boa tarde,
gostaria de saber qual a melhor estrutura para criação de um banco de dados que possa armazenar imagens e que depois as mesmas possam ser exibidas com facilidade.

Abraços a todos


  


2. Re: Estrutura de banco de dados para imagem [RESOLVIDO]

Fábio Berbert de Paula
fabio

(usa Debian)

Enviado em 01/01/2015 - 07:33h

O mais indicado é você armazenar apenas o caminho para a imagem no banco de dados e a imagem em si no disco rígido.

Exemplo simplificado:

CREATE table fotos ( codigo int, foto varchar(100) );
INSERT into fotos VALUES (1, '/imagens/fabio-bonito.png');


Na hora do upload grave a foto em, digamos: /var/www/html/imagens/

Daí na hora de construir a visualização da foto na página, basta recuperar o registro e montar a tag HTML. Em PHP ficaria assim:

<img src="<?php echo $foto_que_peguei_no_banco ?>" /> 


A lógica é essa, espero que tenha entendido. Permanecendo dúvidas posta aqui mesmo.

Um abraço.


3. Re: Estrutura de banco de dados para imagem [RESOLVIDO]

André Luis Talon
a.talon

(usa Ubuntu)

Enviado em 01/01/2015 - 23:09h

Olá Fábio obrigado pela resposta mas me diz uma coisa oque você acha de campo no banco de dados criado como BLOB ou MEDIU BLOB ? É Possivel exibir esse registro via PHP uma vez inserido no banco ?

Abraços


4. Re: Estrutura de banco de dados para imagem [RESOLVIDO]

Fábio Berbert de Paula
fabio

(usa Debian)

Enviado em 01/01/2015 - 23:24h

a.talon escreveu:

Olá Fábio obrigado pela resposta mas me diz uma coisa oque você acha de campo no banco de dados criado como BLOB ou MEDIU BLOB ? É Possivel exibir esse registro via PHP uma vez inserido no banco ?

Abraços


É possível sim, basta jogar o conteúdo do blob como stream e printar o content-type no header da página.

Agora veja bem, um registro armazenando o caminho da imagem em texto puro, vai ter cerca 1kb de tamanho em disco. Um registro blob, dependendo da resolução da imagem, vai ter em média 1mb. No início beleza... daqui a alguns meses quando sua tabela tiver mil registros vai acontecer o seguinte:

- se tiver armazenado em text/plain, o tamanho total da tabela será em torno de 1mb
- se e a imagem for em blob, a tabela terá 1GB

Aí fulano acessa teu site e e faz uma busca por um registro. O MySQL vai ter que, para cada query, percorrer um arquivo de 1GB de tamanho, quando a informação que ele precisa estaria contida em 1mb. Haja CPU e disco rápido, e mesmo assim a diferença de velocidade de consulta seria abismal.

O VOL tem mais de 15 mil screenshots, imagina qual seria o tamanho da tabela se cada imagem tivesse dentro de um registro... Isso também acarreta outros problemas, como por exemplo backup das tabelas, manutenção (mysqlcheck etc).


Um abraço.


5. Re: Estrutura de banco de dados para imagem [RESOLVIDO]

André Luis Talon
a.talon

(usa Ubuntu)

Enviado em 02/01/2015 - 20:04h

Fábio boa tarde,
consegui realizar o insert no banco de dados só não estou conseguindo exibir a imagem os arquivos que foram inseridos até consigo listar , não consegui assimilar seu código enviado no post anterior. Poderia me ajudar ?

Obrigado

SEGUE O CÓDIGO ABAIXO QUE FIZ

<?php

require_once('conexao.php');


$busca_query = mysql_query("SELECT * FROM arquivos ")or die(mysql_error());

if (empty($busca_query)) {
echo "Nenhum registro encontrado.";
}


echo "Arquivos listados <br/><hr> ";
while ($dados = mysql_fetch_array($busca_query)) {
echo "Id : $dados[id]<br />";
echo "Nome : $dados[nome]<br />";
echo "<hr>";
}
?>


6. Re: Estrutura de banco de dados para imagem [RESOLVIDO]

Fábio Berbert de Paula
fabio

(usa Debian)

Enviado em 02/01/2015 - 20:25h

Qual é o nome da campo que contém a imagem? No seu código só tem id e nome.


7. Re: Estrutura de banco de dados para imagem [RESOLVIDO]

André Luis Talon
a.talon

(usa Ubuntu)

Enviado em 02/01/2015 - 21:18h

Fábio boa noite,
na minha tabela só existe dois campos mesmo, id e nome, quando faço o upload da imagem para a pasta do servidor ele utiliza o próprio nome da imagem como preenchimento do campo nome, o campo id é auto increment.

Mas se você sugerir alguma coisa melhor eu aplico aqui.


8. Re: Estrutura de banco de dados para imagem [RESOLVIDO]

Fábio Berbert de Paula
fabio

(usa Debian)

Enviado em 02/01/2015 - 21:58h

Então muda a linha correspondente deixando-a assim:

echo "<img src=\"$dados[nome]\" />"; 


É claro que como o diretório de upload é outro, você tem que especificar. Se for "upload" por exemplo:

echo "<img src=\"/upload/$dados[nome]\" />"; 



9. Re: Estrutura de banco de dados para imagem [RESOLVIDO]

André Luis Talon
a.talon

(usa Ubuntu)

Enviado em 02/01/2015 - 22:17h

É Fábio obrigado pela ajuda, sem querer fiz uma alteração na "\" e funcionou.

echo "<img src=\"fotos/$dados[nome]\" />";


10. Re: Estrutura de banco de dados para imagem [RESOLVIDO]

Fábio Berbert de Paula
fabio

(usa Debian)

Enviado em 02/01/2015 - 22:54h

Boa! Gostei de ver.

Um abraço.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts