Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Armazenar imagem em banco de dados e depois mostrar t


Brenno Ferreira Santiago

Pergunta

Ola!

Eu queria saber como eu faço para colocar um formulario em que nele eu escolho as imagens de dentro do PC.. (input 'file') aí essas imagens são armazenadas dentro do meu banco de dados, e depois eu consiga mostrar todas elas juntas...

Eu estava com um script que armazenava as imagens dentro de uma pasta... mas eu não estava conseguindo mostrar todas as imagens juntas.. por isso axo q seria melhor armazena-las dentro de um banco de dados, até mesmo por questão de organização...

e também fica mais facil na hora de mostra-las....

Caso alguém possa me ajudar ou dar dicas, fico grato!

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Armazenar imagens ou qualquer tipo de arquivo binário no banco de dados é pedir pra ter problema... qualquer DBA sempre vai ter isso em mente...

O mais comum é guardar a foto ou arquivo em uma pasta no servidor e no MySQL apenas a referência a esse arquivo...

http://scriptbrasil.com.br/forum/index.php?showtopic=91361

http://scriptbrasil.com.br/forum/index.php?showtopic=103230

Acima dois exemplo de como isso funciona...

Caso realmente queira dessa maneira, eu já postei a um tempo um link de como fazer isso (enviar arquivos para campos do tipo BLOB...

Link para o comentário
Compartilhar em outros sites

  • 0

Eu estou com uma outra maneira aki em que as imagens vai para uma pasta... como eu tenho que fazer para exibir todas as imagens?

Olha o Codigo ae:

<?

// Prepara a variável caso o formulário tenha sido postado
$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;

$config = array();
// Tamano máximo da imagem, em bytes
$config["tamanho"] = 500000;
// Largura Máxima, em pixels
$config["largura"] = 1024;
// Altura Máxima, em pixels
$config["altura"] = 768;
// Diretório onde a imagem será salva
$config["diretorio"] = "fotos/";

// Gera um nome para a imagem e verifica se já não existe, caso exista, gera outro nome e assim sucessivamente..
// Função Recursiva
function nome($extensao)
{
    global $config;

    // Gera um nome único para a imagem
    $temp = substr(md5(uniqid(time())), 0, 10);
    $imagem_nome = $temp . "." . $extensao;
    
    // Verifica se o arquivo já existe, caso positivo, chama essa função novamente
    if(file_exists($config["diretorio"] . $imagem_nome))
    {
        $imagem_nome = nome($extensao);
    }

    return $imagem_nome;
}

if($arquivo)
{
    $erro = array();
    
    // Verifica o mime-type do arquivo para ver se é de imagem.
    // Caso fosse verificar a extensão do nome de arquivo, o código deveria ser:
    //
    // if(!eregi("\.(jpg|jpeg|bmp|gif|png){1}$", $arquivo["name"])) {
    //      $erro[] = "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo"; }
    //
    // Mas, o que ocorre é que alguns usuários mal-intencionados, podem pegar um vírus .exe e simplesmente mudar a extensão
    // para alguma das imagens e enviar. Então, não adiantaria em nada verificar a extensão do nome do arquivo.
    if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"]))
    {
        $erro[] = "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo";
    }
    else
    {
        // Verifica tamanho do arquivo
        if($arquivo["size"] > $config["tamanho"])
        {
            $erro[] = "Arquivo em tamanho muito grande! A imagem deve ser de no máximo " . $config["tamanho"] . " bytes. Envie outro arquivo";
        }
        
        // Para verificar as dimensões da imagem
        $tamanhos = getimagesize($arquivo["tmp_name"]);
        
        // Verifica largura
        if($tamanhos[0] > $config["largura"])
        {
            $erro[] = "Largura da imagem não deve ultrapassar " . $config["largura"] . " pixels";
        }

        // Verifica altura
        if($tamanhos[1] > $config["altura"])
        {
            $erro[] = "Altura da imagem não deve ultrapassar " . $config["altura"] . " pixels";
        }
    }

    if(!sizeof($erro))
    {
        // Pega extensão do arquivo, o indice 1 do array conterá a extensão
        preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext);
        
        // Gera nome único para a imagem
        $imagem_nome = nome($ext[1]);

        // Caminho de onde a imagem ficará
        $imagem_dir = $config["diretorio"] . $imagem_nome;

        // Faz o upload da imagem
        move_uploaded_file($arquivo["tmp_name"], $imagem_dir);
    }
}
?>
<html>
<head>
<title>Enviar Foto</title>
<style type="text/css">
BODY, TD {font-family: verdana; font-size: 10pt; color: white}
</style>
</head>

<body bgcolor=black link=red vlink=red alink=red>

<center><font size=4>Envio de Foto</font><BR>
<?
// Imagem foi enviada com sucesso, mostra mensagem de SUCESSO
if($arquivo && !sizeof($erro))
{
    echo "<img src=\"" . $imagem_dir . "\" border=0><BR><BR>Sua foto foi enviada com sucesso!<br>Deseja enviar outra? <a href=\"foto.php\">Clique aqui</a>";
}

// Ocorreu algum erro ou ainda o formulário não foi postado
else
{
?>
<form action="<?echo $PHP_SELF?>" method=post  ENCTYPE="multipart/form-data">
Envie sua foto em formato gif, jpg, bmp ou png.<BR>
A imagem não deve ter mais que <?echo $config["tamanho"] ?> bytes e deve ter no m&aacute;ximo <? echo $config["largura"] . "x" . $config["altura"] ?> pixels.<BR>
<table border=0 cellpadding=2 cellspacing=1 align=center>
<?
if(sizeof($erro))
{
    echo "<tr><td colspan=2 bgcolor=red><B><U>Ocorreu(am) o(s) seguinte(s) erro(s):</u><BR>";
    foreach($erro as $err)
    {
        echo " - " . $err . "<BR>";
    }
    echo "</B></td></tr>";
}
?>
<tr><td align=center>Enviar Foto: <input type=file size=30 name=foto></td></tr>
<tr><td align=center><input type=submit value="Ok!">
<a href="mostra.php">Mostrar Imagens</a> </td>
</tr>
</table>
</form>
<? } ?>

<br>
</body>
</html>

Link para o comentário
Compartilhar em outros sites

  • 0

Sem BD? Se você utilizar o PHP5, leia o diretório com o scandir, isso vai pegar todos os arquivos do diretório, se dentro do diretório só existir imagens basta utilizar o foreach e mandar exibir com a tag <img src... caso existam outros tipos de arquivo ai você vai ter que ler todo o array que foi gerado com o scandir e utilizando a expressão regular que já está no seu script:

if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"]))

Verificar se o arquivo se enquandra nos parâmetros, se se enquadrar você adiciona ao novo array, ao final de tudo você vai ler esse novo array e então exibir com a tag <img src...

Link para o comentário
Compartilhar em outros sites

  • 0

Exemplo...

<?php

$dir    = 'tst';//Diretório que vai ser lido
$lido = scandir($dir);
$imagens = array();
foreach($lido as $indice => $arquivo){
if(eregi("(jpeg|jpeg|jpg|png|gif|bmp)$", $arquivo)){
$imagens[] = $arquivo;
}
}

foreach($lido as $indice => $arquivo){
if(eregi("(jpeg|jpeg|jpg|png|gif|bmp)$", $arquivo)){
echo "<a href=\"$dir/$arquivo\">$arquivo</a><BR>";
}
}

foreach($lido as $indice => $arquivo){
if(eregi("(jpeg|jpeg|jpg|png|gif|bmp)$", $arquivo)){
echo "<img src=\"$dir/$arquivo\"><BR>";
}
}

?>

No primeiro foreach eu criei um array com as imagens (que você pode ocupar pra outra coisa)

No segundo são criados links para as imagens

No terceiro as imagens são exibidas de forma direta

Claro que só coloque os três exemplos pra mostrar as possibilidade, no dia-a-dia um só já resolve tudo...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652,1k
×
×
  • Criar Novo...