+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 (~15 anos atrás)

fccd disse:
Grande utilidade esse artigo!

Valeu!
10/01/2008 11:10am (~16 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 (~17 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 (~18 anos atrás)

CARLOS disse:
kkk
07/04/2006 2:10pm (~18 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 (~18 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 (~18 anos atrás)

E no PostGreSQL, como ficaria ? Qual o tipo de dado ?
29/09/2005 8:01am (~18 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 (~18 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 (~18 anos atrás)

Novo Comentário:

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