Jump to content

POWERED BY:

Archived

This topic is now archived and is closed to further replies.

msena

Listar e exibir imagem inserida em BLOB no Mysql?

Recommended Posts

Como recuperar dados BLOB com PHP e MySQL? Tenho os campos "codigo" e "imagem", a imagem é inserida no banco mysql. Como faço para listar e mostrar esta imagem que está inserida no Mysql?

Share this post


Link to post
Share on other sites

Como ela está codificada ?

Base 64 ?

 

crie um arquivo: imagem.php

<?php
include 'conexao.php';
$Id = (int)$_GET['cod'];

$sql = "select foto from tblfuncionario where codfuncionario = $Id";
$exe = mysql_query($sql);

header("Content-Type: image/jpg");
echo base64_encode(mysql_result($exe, 0, 'foto'));
?>

 

Para mostrar, coloque esse código na onde a imagem tem que aparecer.

<img src='imagem.php?cod=1' />

Share this post


Link to post
Share on other sites

Como ela está codificada ?

Base 64 ?

 

crie um arquivo: imagem.php

<?php
include 'conexao.php';
$Id = (int)$_GET['cod'];

$sql = "select foto from tblfuncionario where codfuncionario = $Id";
$exe = mysql_query($sql);

header("Content-Type: image/jpg");
echo base64_encode(mysql_result($exe, 0, 'foto'));
?>

 

Para mostrar, coloque esse código na onde a imagem tem que aparecer.

<img src='imagem.php?cod=1' />

 

 

Amigo estes são os campos que tenho: id ext imagem codigo, sendo que a imagem fica locada no Mysql, e "ext" é a extenção do arquivo que pode ser jpg, gif, pdf...

 

Como ficaria neste caso?

 

Agradeço desde já amigo

Share this post


Link to post
Share on other sites

Só você adaptar o Select, eu te mandei um exemplo que eu tenho aqui.

E olha o Header tbm, lá você vai por o EXT.

 

Tenta ae... se der erro poste o que você fez e o erro.

Share this post


Link to post
Share on other sites

<?php
      $conexao = mysql_connect("localhost","use","senha");
$db = mysql_select_db("meubanco");
       $Id = (int)$_GET['codigo'];
       $sql = "SELECT * FROM imgguad ORDER BY id"; 
       //$sql = "select imagem from imgguad where codigo = $Id";
       $exe = mysql_query($sql);

       header("Content-Type: image/jpg");
       echo base64_encode(mysql_result($ext, 0, 'imagem'));

?>

 

Apresentou este erro:

"A imagem "http://111.11.1.11/2.php" contém erros e não pode ser exibida."

Share this post


Link to post
Share on other sites

Para vocÊ ter uma melhor noção, veja o arquivo que uso para inserir as imagens no BD. Valeu e obrigado.

 

<?php

//Inicia sessao e carrega o usuario
ob_start();
session_start();
if ($_SESSION["auth"] == md5($_SESSION["usuario"]."secreto"))
{
$usuario = strtoupper($_SESSION["usuario"]);

}
else {

// endsession();
  header("Location: redir.php");
}
$db_host = 'localhost'; // don't forget to change
$db_user = 'user';
$db_pwd =  'senha';
$database = 'banco';
$table = 'tabela';
// use the same name as SQL table

if (!mysql_connect($db_host, $db_user, $db_pwd))
   die("Nao e Possivel Conectar ao Banco de Dados! ");

if (!mysql_select_db($database))
   die("Nao e Possivel Selecionar o Banco");

function sql_safe($s)
{
   if (get_magic_quotes_gpc())
       $s = stripslashes($s);
   return mysql_real_escape_string($s);
}

if ($_SERVER['REQUEST_METHOD'] == 'POST')
{    

   $title = trim(sql_safe($_POST['title']));

   if ($title == '') 
       $title = '(empty title)';

       if (isset($_FILES['photo']))
       {            
           @list(, , $imtype, ) = getimagesize($_FILES['photo']['tmp_name']);

           if ($imtype == 3) 
               $ext="png";   
           elseif ($imtype == 2)
               $ext="jpg";
           elseif ($imtype == 1)
               $ext="gif";
           else
               $ext="pdf";
               //$msg = 'Erro: Tipo desconhecido'.$imtype;

           if (!isset($msg)) 
           {
               $data = file_get_contents($_FILES['photo']['tmp_name']);
               $data = mysql_real_escape_string($data);

               mysql_query("INSERT INTO {$table}
                               SET ext='$ext', title='$title',
                                   imagem='$data' , codigo='$codigo',
                                   usuario='$usuario' ");

               $msg = 'Imagem Carregada com Sucesso';
           }
       }
       elseif (isset($_GET['title']))           
           $msg = 'Erro: Arquivo nao Carregado';


}
?>

<html>

<head><title>Cadastro de Imagens</title>
<link href="face2.css" rel="stylesheet" type="text/css">
</head>

<body bgcolor="white" class="corpo1">

<div id="logo"></div>
<style type="text/css">
<!--
   input { 
         background-color: "white"; 
         font: 14px arial;
         color: black;
         border:1px solid gray;
         }
-->

</style>

<style type="text/css">
<!--
  select { 
         background-color: white;
         font:14px  arial;
         color: black;
         border:2px solid gray;
         }
-->
</style>


<?php
if (isset($msg)) 

{
?>

<p style="font-weight: bold;"><?=$msg?>
<br>
<a href="<?=$PHP_SELF?>" class="corpo1">Recarregar Pفgina</a>

</p>

<?php
}
?>
<label><center spry:hover="capit1">
 <p>CADASTRO DE IMAGENS</p>
</center>
</label>
<br>
<br><br>

<table border="0" BGCOLOR="transparent" align="left" cellpadding="0" cellspacing="20">
<tr>
<td><b class="capit1"><span class="capit1">BOLSOS</span></b></td>
<td><b class="capit1"><span class="capit1">SEGUIMENTO</span></b></td>
<td><b class="capit1"><span class="capit1">TIPO</span></b></td>
</tr>

<form method="post" action="teste.php"> 
<tr>
<td>
 <select name="bolso" class="formulario">
  <option selected="selected"><?php echo $bolso ?>
  <option>Faca - F
  <option>Relogio - R
  <option>Cargo - C
  <option>Carpinteiro - O
 </select>
</td>

<td>
<select name="seg" class="formulario">
 <option selected="selected"><?php echo $seg ?>
 <option>Masculino Adulto - MA
 <option>Feminino Adulto - FA
  </select>
</td>

<td>
<select name="tipo" class="formulario">
 <option selected="selected"><?php echo $tipo ?>
 <option>Curvo - CV              
 <option>Reto - RT              
 <option>Inclinado - IN         
 </select>
</td>
</tr>
<tr align="center">
<td colspan="3" align="left"><input name="Submit" type="submit" class="bot" value="       GERAR CÓDIGO    ">
</td>
</tr>
</form>
</table>

<p><br>
 <br><br><br><br><br><br>
</p>
<p><br>
<BR>
</p>
<hr align="left" size="2" color="#999966">
<br>

<table border="0" BGCOLOR="transparent" align="left" cellpadding="0" cellspacing="20">
<tr>
<td align="center">
 <label for="usuario" class="corpo1" >USUءRIO</label>
</td>
<td>
 <input type="text" class="formulario" name="usuario" id="usuario" size="30" value="<?php echo
$usuario ?>" />
</td>
<form action="<?=$PHP_SELF?>" method="POST" enctype="multipart/form-data">
<td align="left">
 <label for="codigo" class="corpo1">CسDIGO</label>
</td>
<td colspan="2">
 <input name="codigo" type="text" class="formulario" 
 value="<?php echo $letrafinal = substr($bolso, -1).$letrafinal = substr($seg, -2).$letrafinal = substr($tipo,-2) ?>" size="5" /> 
</td>
</tr>

<tr>
<td align="left" class="corpo1">
 <label for="title">TÍTULO</label>
</td>
<td colspan="2">
 <input name="title" type="text" class="formulario" id="title" size="60" />
</td>
</tr>

<tr>
<td align="left" class="corpo1">
 <label for="photo">ARQUIVO</label>
</td>
<td colspan="2">
 <input name="photo" type="file" class="bot" id="photo" size="30" /> 
</td>
</tr>

<tr>
<td colspan="3" align="left">
 <input type="submit" class="bot" value="       GRAVAR         "/>
</td>
</tr>
</table>
</form>
</body>
</html>

Share this post


Link to post
Share on other sites

Ao invés de usar isso:

$data = mysql_real_escape_string($data)

 

Use:

 

$data = base64_encode(addslashes($data));

 

E na hora de mostrar assim:

 

echo base64_decode(stripslashes(mysql_result($ext, 0, 'imagem')));

Share this post


Link to post
Share on other sites

Nada amigo, axo que estou fazendo algo de forma errado aqui, logo sou pricinpiante.

ABaixo o arquivo que era para exibir as imagens.

 

Veja ae como está. Como ele deve ficar?

 

<?php
//Inicia sessao e carrega o usuario
ob_start();
session_start();
if ($_SESSION["auth"] == md5($_SESSION["usuario"]."secreto"))
{
$usuario = strtoupper($_SESSION["usuario"]);

}
else {

// endsession();
  header("Location: redir.php");
}
$conexao = mysql_connect("localhost","root","root");
$db = mysql_select_db("meubanco");
$sql = "SELECT * FROM tabela ORDER BY id"; 

$res = mysql_query($sql)
or die ("Não foi possível realizar a consulta ao banco de dados");

while($linha = mysql_fetch_array($res)) {

$id = $linha["id"];
$ext = $linha["ext"];
$usuario = $linha["usuario"];
$codigo = $linha["codigo"];
$sequencia = $linha["sequencia"]; 
$imagem = $linha["imagem"]; 
echo $imagem . "jpg";
echo $usuario;
echo "<br>";
echo base64_decode(stripslashes(mysql_result($ext, 0, 'imagem')));

}

?>

Share this post


Link to post
Share on other sites

Primeiro, nao tem como você mostrar um monte de imagens de uma vez.

 

Veja no exemplo que postei:

<?php
       include 'conexao.php';
       $Id = (int)$_GET['cod'];

       $sql = "select foto from tblfuncionario where codfuncionario = $Id";
       $exe = mysql_query($sql);

       header("Content-Type: image/jpg");
       echo base64_encode(stripslashes((mysql_result($exe, 0, 'foto')));
?>

 

É só do campo imagem que você precisa e do campo tipo.

Mais nada.

 

Altere somente seu select para o campo e tabelas que você vai usar. Nao precisa por a extensao por que você salvou o conteúdo da imagem no banco.

 

E na hora de mostrar faça:

 

<img src='imagem.php?id=1' />

 

Na onde você for mostrar as imagens, você pode fazer um While, para pegar tudo.

Dae no while você faz:

<img src='imagem.php?id=<?php echo $res['id']; ?>' />

Share this post


Link to post
Share on other sites

Primeiro, nao tem como você mostrar um monte de imagens de uma vez.

 

Veja no exemplo que postei:

<?php
       include 'conexao.php';
       $Id = (int)$_GET['cod'];

       $sql = "select foto from tblfuncionario where codfuncionario = $Id";
       $exe = mysql_query($sql);

       header("Content-Type: image/jpg");
       echo base64_encode(stripslashes((mysql_result($exe, 0, 'foto')));
?>

 

É só do campo imagem que você precisa e do campo tipo.

Mais nada.

 

Altere somente seu select para o campo e tabelas que você vai usar. Nao precisa por a extensao por que você salvou o conteúdo da imagem no banco.

 

E na hora de mostrar faça:

 

<img src='imagem.php?id=1' />

 

Na onde você for mostrar as imagens, você pode fazer um While, para pegar tudo.

Dae no while você faz:

<img src='imagem.php?id=<?php echo $res['id']; ?>' />

 

 

Não conseguir resolver a questão. Tem como você diagramar este script de consulta a imagem? Se não puder tudo bem, de qualquer forma, obrigado pela força amigo.

Share this post


Link to post
Share on other sites

SEGUE OS 2 ARQUIVOS, O QUE INSERIR NO BANCO DE DADOS E O QUE SERIA PARA CONSULTAR E MOSTRAR A IMAGEM CADASTRADA NO BANCO DE DADOS.

 

ARQUIVO QUE INSERI A IMAGEM NO BANCO DE DADOS MYSQL:

 

<?php

//Inicia sessao e carrega o usuario
ob_start();
session_start();
if ($_SESSION["auth"] == md5($_SESSION["usuario"]."secreto"))
{
$usuario = strtoupper($_SESSION["usuario"]);

}
else {

// endsession();
  header("Location: redir.php");
}
$db_host = 'localhost'; // don't forget to change
$db_user = 'user';
$db_pwd =  'senha';
$database = 'banco';
$table = 'tabela';
// use the same name as SQL table

if (!mysql_connect($db_host, $db_user, $db_pwd))
   die("Nao e Possivel Conectar ao Banco de Dados! ");

if (!mysql_select_db($database))
   die("Nao e Possivel Selecionar o Banco");

function sql_safe($s)
{
   if (get_magic_quotes_gpc())
       $s = stripslashes($s);
   return mysql_real_escape_string($s);
}

if ($_SERVER['REQUEST_METHOD'] == 'POST')
{    

   $title = trim(sql_safe($_POST['title']));

   if ($title == '') 
       $title = '(empty title)';

       if (isset($_FILES['photo']))
       {            
           @list(, , $imtype, ) = getimagesize($_FILES['photo']['tmp_name']);

           if ($imtype == 3) 
               $ext="png";   
           elseif ($imtype == 2)
               $ext="jpg";
           elseif ($imtype == 1)
               $ext="gif";
           else
               $ext="pdf";
               //$msg = 'Erro: Tipo desconhecido'.$imtype;

           if (!isset($msg)) 
           {
               $data = file_get_contents($_FILES['photo']['tmp_name']);
               $data = mysql_real_escape_string($data);

               mysql_query("INSERT INTO {$table}
                               SET ext='$ext', title='$title',
                                   imagem='$data' , codigo='$codigo',
                                   usuario='$usuario' ");

               $msg = 'Imagem Carregada com Sucesso';
           }
       }
       elseif (isset($_GET['title']))           
           $msg = 'Erro: Arquivo nao Carregado';


}
?>

<html>

<head><title>Cadastro de Imagens</title>
<link href="face2.css" rel="stylesheet" type="text/css">
</head>

<body bgcolor="white" class="corpo1">

<div id="logo"></div>
<style type="text/css">
<!--
   input { 
         background-color: "white"; 
         font: 14px arial;
         color: black;
         border:1px solid gray;
         }
-->

</style>

<style type="text/css">
<!--
  select { 
         background-color: white;
         font:14px  arial;
         color: black;
         border:2px solid gray;
         }
-->
</style>


<?php
if (isset($msg)) 

{
?>

<p style="font-weight: bold;"><?=$msg?>
<br>
<a href="<?=$PHP_SELF?>" class="corpo1">Recarregar P?gina</a>

</p>

<?php
}
?>
<label><center spry:hover="capit1">
 <p>CADASTRO DE IMAGENS</p>
</center>
</label>
<br>
<br><br>

<table border="0" BGCOLOR="transparent" align="left" cellpadding="0" cellspacing="20">
<tr>
<td><b class="capit1"><span class="capit1">BOLSOS</span></b></td>
<td><b class="capit1"><span class="capit1">SEGUIMENTO</span></b></td>
<td><b class="capit1"><span class="capit1">TIPO</span></b></td>
</tr>

<form method="post" action="teste.php"> 
<tr>
<td>
 <select name="bolso" class="formulario">
  <option selected="selected"><?php echo $bolso ?>
  <option>Faca - F
  <option>Relogio - R
  <option>Cargo - C
  <option>Carpinteiro - O
 </select>
</td>

<td>
<select name="seg" class="formulario">
 <option selected="selected"><?php echo $seg ?>
 <option>Masculino Adulto - MA
 <option>Feminino Adulto - FA
  </select>
</td>

<td>
<select name="tipo" class="formulario">
 <option selected="selected"><?php echo $tipo ?>
 <option>Curvo - CV              
 <option>Reto - RT              
 <option>Inclinado - IN         
 </select>
</td>
</tr>
<tr align="center">
<td colspan="3" align="left"><input name="Submit" type="submit" class="bot" value="       GERAR CÓDIGO    ">
</td>
</tr>
</form>
</table>

<p><br>
 <br><br><br><br><br><br>
</p>
<p><br>
<BR>
</p>
<hr align="left" size="2" color="#999966">
<br>

<table border="0" BGCOLOR="transparent" align="left" cellpadding="0" cellspacing="20">
<tr>
<td align="center">
 <label for="usuario" class="corpo1" >USU?RIO</label>
</td>
<td>
 <input type="text" class="formulario" name="usuario" id="usuario" size="30" value="<?php echo
$usuario ?>" />
</td>
<form action="<?=$PHP_SELF?>" method="POST" enctype="multipart/form-data">
<td align="left">
 <label for="codigo" class="corpo1">C?DIGO</label>
</td>
<td colspan="2">
 <input name="codigo" type="text" class="formulario" 
 value="<?php echo $letrafinal = substr($bolso, -1).$letrafinal = substr($seg, -2).$letrafinal = substr($tipo,-2) ?>" size="5" /> 
</td>
</tr>

<tr>
<td align="left" class="corpo1">
 <label for="title">TÍTULO</label>
</td>
<td colspan="2">
 <input name="title" type="text" class="formulario" id="title" size="60" />
</td>
</tr>

<tr>
<td align="left" class="corpo1">
 <label for="photo">ARQUIVO</label>
</td>
<td colspan="2">
 <input name="photo" type="file" class="bot" id="photo" size="30" /> 
</td>
</tr>

<tr>
<td colspan="3" align="left">
 <input type="submit" class="bot" value="       GRAVAR         "/>
</td>
</tr>
</table>
</form>
</body>
</html>

 

ARQUIVO DE CONSULTA QUE DEVERIA MOSTRAR A IMAGEM CADASTRADA:

<?php
//Inicia sessao e carrega o usuario
ob_start();
session_start();
if ($_SESSION["auth"] == md5($_SESSION["usuario"]."secreto"))
{
$usuario = strtoupper($_SESSION["usuario"]);

}
else {

// endsession();
  header("Location: redir.php");
}
$conexao = mysql_connect("localhost","root","root");
$db = mysql_select_db("meubanco");
$sql = "SELECT * FROM tabela ORDER BY id"; 

$res = mysql_query($sql)
or die ("Nãƒo foi possível realizar a consulta ao banco de dados");

while($linha = mysql_fetch_array($res)) {

$id = $linha["id"];
$ext = $linha["ext"];
$usuario = $linha["usuario"];
$codigo = $linha["codigo"];
$sequencia = $linha["sequencia"]; 
$imagem = $linha["imagem"]; 
echo $imagem . "jpg";
echo $usuario;
echo "<br>";
echo base64_decode(stripslashes(mysql_result($ext, 0, 'imagem')));

}

?>

 

GRATO

Share this post


Link to post
Share on other sites

O tipo blob grava um arquivo binário no banco, como o nome diz; Binary Large Object, sendo assim

 

você tem que "recodificar" os bits para poder exibir as imagens.

 

Tenta fazer como o Justin Bieber disse, use a função base64_encode().

 

Não deixe ele mais nervoso senão ele vai começar a cantar.

 

 

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.