Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Algum moderador pode mover para artigos e tutoriais?
Teoria
Ola pessoal este e meu primeiro tutorial aqui no forum e eu irei ensinar como armazenar imagem em banco de dados.
Primeiro vamos criar 2 campos:id e imagem.Voces estao acostumados com id sendo do tipo int com 5 caracteres de comprimento,certo?Neste script usaremos char com 4 de comprimento,o campo imagem sera do tipo LONGBLOB que e o formato proprio para arquivos,seria como um LONGTEXT mas armazena binarios.
Mas prumodique eu vo usar isso se armazenar no disco e mais facil e rapido???Isso serve quando:
-Voce tem informaçoes muito sensiveis no disco;
-Existem atacantes que sao um risco a considerar;
-Departamento de segurança que enche o saco 25Horas por dia;
-Necessidade de fazer firula no sistema;
-Criar post em forum para mostrar que voce nao e um completo anaufabeto.
Pratica
Vamos criar 3 arquivos:
index.html <-Formulario de upload;
recebe.php <-arquivo que recebe a imagem posta no banco e retorna URL;
visualizar.php <-arquivo que exibe a imagem.
O index.html e um form de upload normal com um campo do tipo file e um botao de submit.
<html>
<body>
<form name="imagem" action="recebe.php" method="post" enctype="multipart/form-data" id="imagem">
<span>Email:</span>
<input name="email" type="text" id="email">
<br>
<span>Arquivo:</span>
<input name="arquivo" type="file" id="arquivo"><br>
<input name="Enviar" type="Submit">
</form>
</body>
</html>
recebe.php comentado
<?php
$imagem = addslashes(file_get_contents($_FILES['arquivo']['tmp_name'])); //Pega a imagem e escapa os caracteres
$host = "localhost/upload/visualizar.php?img="; //Endereço completo do arquivo visualizar
$uniqid = substr(md5(uniqid()),0,4); //Gera uma id unica e seleciona os primeiros 4 caracteres
mysql_connect("localhost","root",""); //Conecta no MySQL
mysql_select_db("imagens");//Seleciona Banco de dados
$query = mysql_query("Insert into imagens (id,imagem,email) values('$uniqid','$imagem','$email')");//Insere no banco os dados da imagem
if (!$query) {
echo 'Erro de consulta'; //Imprime a mensagem de erro em caso de erro (Ah nao jura??)
}else{
echo "O link da sua imagem e: ".$host.$uniqid;//Imprime o link da imagem com o id
}
?>
Visualizar.php Acho que nao precisa nem de comentarios:
<?php
$imagem = $_GET['img'];//Pega o id
mysql_connect("localhost","root","");
mysql_select_db('imagens');
$retorno = mysql_query("Select imagem from imagens where id='$imagem'"); //Seleciona a imagem busando o id
$fetch = mysql_fetch_assoc($retorno);//joga num array
header("Content-Type: image/jpeg"); //Manda o header pro cliente informando que e uma imagem
echo $fetch['imagem'];//Exibe a mesma
?>
Voce entendeu direitinho?Quer que eu desenhe?Tem alguma duvida?Posta ai que nois resorve,tudo bem?
PS:Desculpem a falta de acentos mas meu teclado esta com problemas;
PS2:O prumodique e anaufabeto foram propositais.
Carregando comentários...