+4

Armazenando Arquivos Binários no MySQL

criado por Bruno Rodrigues Silva em 11/04/2002 11:52am
config.inc

<?php
$srv
="localhost";               /*endereço do servidor onde está instalado o MySQL */
$usr
="root";            /* usuário do MySQL */
$snh
="123456";                  /* senha do usuário */
$url
="localhost/artigo";   /* Endereço completo onde está instalado o script */
$banco
="Arquivobd";     /*Nome do banco de dados criado */
?>

principal.php

<html><head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF">
<p> </p>
<form method="post" action="dados.php" enctype="multipart/form-data">
 
<table width="100%" border="0">
   
<tr>
     
<td> </td>
   
</tr>
   
<tr>
     
<td>
       
<table width="100%" border="0">
         
<tr>
           
<td width="20%"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Localizar
              arquivo:
</font></td>
           
<td width="80%">
             
<input type="file" name="arq">
           
</td>
         
</tr>
         
<tr>
           
<td width="20%"> </td>
           
<td width="80%">
             
<input type="submit" name="Submit" value="Enviar">
           
</td>
         
</tr>
       
</table>
     
</td>
   
</tr>
   
<tr>
     
<td>  </td>
   
</tr>
 
</table>
</form>
<p> </p>
</body></html>

<?php

/* Essa parte, mostra todos os arquivos que já foram armazenados anteriormente */

include
'config.inc';                                               /* inclue arquivo de configuração */
$con
=mysql_connect($srv, $usr, $snh) or print mysql_error();          /* faz a conexao com o MySQL */
$db
=mysql_select_db($banco, $con) or print mysql_error();          /* seleciona o Banco de dados */
$sql
="select nome from arquivos";                                  /* cria a query */
$exec
=mysql_query ($sql, $con) or print mysql_error();                    /* Executa a query */
echo
"<table border='1'>";                                       /* inicia montagem da tabela */
while ($vet=mysql_fetch_array ($exec)) {                        /*enquanto houver registros cria um vetor de campos */
        $arq_db
=$vet["nome"];
        echo
"<tr>";
        echo
"<td>$arq_db</td>";                                /* imprime o nome do arquivo */
       
/* monta url para chamar o arquivo copiar.php passando o nome do arquivo como parâmetro*/
        echo
"<td><a href='$url/copiar.php?arquivo=$arq_db'>Copiar arquivo</a></td>";
        echo
"</tr>";
}
echo
"</table>";                /* termina a montagem da tabela */
mysql_close
($con);              /* fecha a conexão como banco de dados */
?>

Comentários:

Mostrando 1 - 10 de 34 comentários
Alguém consegue me ajudar?
Estou passando extamente por este problema.
Só que ao invés de colocar um link quero apenas exibir a foto.
Tentei usar object e img mas não consigo.
Alguém sabe como fazer isso?
16/07/2008 3:45pm (~17 anos atrás)

fccd disse:
Grande utilidade esse artigo!

Valeu!
10/01/2008 11:10am (~17 anos atrás)

Andre Lamota disse:
NAo entendo muito de php e mysql, mas creio que segui os passo direitin, o que acontece é que quando vai mostrar a imagem, só mostra os hexadecimais dela e nao a imagem propriamente dita, o que será que está acontecendo
QUero que mostre as imagens nao os hexadecimais dela..

Obrigado
19/08/2006 7:30am (~19 anos atrás)

Caro Roberto,

Eu utilizo o mesmo esquema de armazenamento de informação do bruno, porem deve-se renomear esse arquivo .ini para .php, assim, teóricamente, ninguém conseguirá acessar suas informações do BD.

Att
Thiago Teixeira
22/05/2006 5:56am (~19 anos atrás)

CARLOS disse:
kkk
07/04/2006 2:10pm (~19 anos atrás)

CARLOS disse:
estou usando o (Armazenando Arquivos Binários no MySQL) para armazenar imagem, como faço para abrir as fotos dendro do site. e para um pagina de noticias eu quero inserir o texto com a imagem que esta la! grato
07/04/2006 12:59pm (~19 anos atrás)

Olá Bruno, dei uma olhada no seu artigo publicado no PHPBrasil ! muito bom ! No entanto tenho um problema. O processo de inserir o registro esta normal, mas quanto faço uma solicitação para baixar o arquivo, é mostrado naquela tela de download o Nome do Arquivo : Tipo do Arquivo, mas o Tamanho vem zerado, ou seja, quando faço o download, o arquivo vem com tamanho Zero .
Sabe porque acontece isso ?

Valeu
17/03/2006 5:03am (~19 anos atrás)

E no PostGreSQL, como ficaria ? Qual o tipo de dado ?
29/09/2005 8:01am (~19 anos atrás)

Dartanhan disse:
Estou tendo esse erro, na hora que clico no nome do arquivo para baixar:

Warning: Cannot modify header information - headers already sent by (output started at /home/rgarber/www/noticias/blob/copiar.php:6) in /home/rgarber/www/noticias/blob/copiar.php on line 19

Warning: Cannot modify header information - headers already sent by (output started at /home/rgarber/www/noticias/blob/copiar.php:6) in /home/rgarber/www/noticias/blob/copiar.php on line 20

Warning: Cannot modify header information - headers already sent by (output started at /home/rgarber/www/noticias/blob/copiar.php:6) in /home/rgarber/www/noticias/blob/copiar.php on line 21

Warning: Cannot modify header information - headers already sent by (output started at /home/rgarber/www/noticias/blob/copiar.php:6) in /home/rgarber/www/noticias/blob/copiar.php on line 22
GIF89aÔ<æ¾Ìݘ·gPm[;MC333¬µ½Zq–ÎÝä!M?¤¯µ !o:)‹p8ßææ§ª¡]PF»ÆÊ„ŠŒ™™™Yl†MTn4:<ÄxPÝæïROD7^’¬Ìt¼Ìç’?~µ½¼MJ!ÿ NETSCAPE2.0!ù,ÿ,Ô<ÿ€ ‚ƒ„…†‡ˆ‰Š‹Œ?Ž?? D“”•–—˜™š›œ?žŸ ¡¢—I¥¦§¨¥™©­®22]²³´µ¶´°°s»®¾dÁÂd<ÅÆÇÈÅ¿¾vÍvËÀÃYÓÇÁλs®®Îv®Ø»±³¹®©I‘çèéêë샣ïœíŠðñò‹•娟ù¥¯á·»ä(#[/h¿†%[¸p˜CaÓ"JÌÌ7n¦.:ÓömN3SD’‰B‡ƒJ†ħ…/ƒø¤
......
.....
.....
.....
.....
.....

Como posso resolver isso??
14/09/2005 3:21pm (~20 anos atrás)

como faço para mostrar a imagem <img scr> direto do banco sem ter que copiar para o hd
17/08/2005 8:28am (~20 anos atrás)

Novo Comentário:

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