Você está na página 1de 9

Introduo ao uso de

imagens no MySQL
Em muitas aplicaes comerciais ou cientficas
necessrio que se armazenem imagens na base de
dados. Apesar de muitos especialistas garantirem
que mais eficiente armazenar imagens em
arquivos ao invs de tabelas, no so raros aqueles
que sentem dificuldade em gerenciar arquivos fora
do banco de dados. Por esta razo este artigo foi
desenvolvido. Nele apresentamos uma introduo
(simples) sobre o armazenamento de imagens em
tabelas MySQL utilizando a linguagem PHP.
5




Gostei (2)

(0)
1. Introduo

Em muitas aplicaes comerciais ou cientficas necessrio que se
armazenem imagens na base de dados. Apesar de muitos
especialistas garantirem que mais eficiente armazenar imagens em
arquivos ao invs de tabelas, no so raros aqueles que sentem
dificuldade em gerenciar arquivos fora do banco de dados. Por esta
razo este artigo foi desenvolvido. Nele apresentamos uma
introduo sobre o armazenamento de imagens em tabelas MySQL
utilizando a linguagem PHP.
2. Tipos blob

Como voc deve saber existe uma srie de tipos de campos definidos
no MySQL: inteiros, texto regular, nmeros reais, etc. A diferena
principal entre estes campos (tipos primrios) e o blob
principalmente a quantidade de informao que se consegue
armazenar.
Um blob um campo binrio grande que pode uma gama variada de
dados. Os quatro tipos blob existentes no MySQL so: TINYBLOB,
BLOB, MEDIUMBLOB, e LONGBLOB. Estes tipos diferem apenas no
tamanho mximo de bytes que podem armazenar. neste tipo de
campo que armazenamos imagens no MySQL.
3. Criando a tabela no banco

O script abaixo nos mostra como criar uma tabela no MySQL que
contenha um campo blob. A tabela que iremos criar se chama
PESSOA e contm um ID (Chave primria) e a imagem da pessoa.
CREATE TABLE PESSOA (
PES_ID int NOT NULL AUTO_INCREMENT PRIMARY KEY,
PES_IMG BLOB
);

4. Inserindo a imagem na tabela criada
Um exemplo de um script PHP que carrega uma imagem em memria e a armazena na
tabela MySQL exibido a seguir. No script, assume-se que o nome do file field
Imagem


If($Imagem != "none") {
$TamanhoImg = filesize($Imagem);
$mysqlImg = addslashes(fread(fopen($Imagem, "r"), $ TamanhoImg));
mysql_connect($host,$username,$password) or die("Impossvel Conectar");
@mysql_select_db($db) or die("Impossvel Conectar");
mysql_query("INSERT INTO PESSOA (PES_IMG) VALUES ('$mysqlImg')") or
die("O sistema no foi capaz de executar a query");
}
else {
echo"Voc no realizou o upload de forma satisfatria.";
}
?>

Este trecho simplesmente o necessrio para se inserir uma imagem
em um banco de dados MySQL. importante que se cheque o packet
size mximo configurado no servidor MySQL. Caso este valor esteja
muito pequeno podem ocorrer erros de gravao do arquivo na
tabela.

5. Exibindo as imagens gravadas anteriormente


Neste ponto j sabemos como gravar as imagens na tabela. Mas de
que adianta gravarmos se no conseguirmos recuper-las? O trecho
de cdigo para recuperao das figuras um pouco mais complicado
do que o cdigo de armazenamento. Entretanto, no podemos
consider-lo um cdigo extremamente complicado. A seguir segue o
cdigo de recuperao de imagens:




mysql_connect($host,$username,$password) or die("Impossvel conectar ao banco.");
@mysql_select_db($db) or die("Impossvel conectar ao banco");
$result=mysql_query("SELECT * FROM PESSOA") or die("Impossvel executar a
query");
While($row=mysql_fetch_object($result)) {
echo " PicNum \">";
}
?>




mysql_connect($host,$username,$password) or die("Impossvel conectar ao banco.");
@mysql_select_db($db) or die("Impossvel conectar ao banco.");
$result=mysql_query("SELECT * FROM PESSOA WHERE PES_ID=$PicNum") or
die("Impossvel executar a query ");
$row=mysql_fetch_object($result);
Header( "Content-type: image/gif");
echo $row->Image;
?>

Bem, apesar do exemplo ser simples, espero ter ajudado aos iniciantes no
armazenamento de imagens em bancos de dado MySQL.

Daniel Cardoso Moraes De Oliveira

Obteve o ttulo de Bacharel em Cincia da Computao em 2004 pela Universidade Federal do Rio
de Janeiro (IM/DCC) e o de Mestrado em 2008, pela COPPE/UFRJ. Atualmente realiza o seu
Doutorado na Linha de Banco de Dados, no PESC - C [...]


Leia mais em: Introduo ao uso de imagens no
MySQL http://www.devmedia.com.br/introducao-ao-uso-de-imagens-no-
mysql/10041#ixzz2xrrUVTk5
Gente acho que consegui, est meio
grotesco o cdigo, se estiver por favor me
falem, mas gostaria agora de pegar do
banco de dados e mostrar em uma JSP como
fao, no tenho a menor idia?!
Formulario
view plaincopy to clipboardprint?
1. <form
action="conecta.jsp" method="post"
id="form" name="form">
2. arquivo<input
type="file" value="imagem">
3.
4. <input
type="submit" value="Enviar">
5.
6. </form>


Grava os Dados no banco
view plaincopy to clipboardprint?
1. <%
2. Connection conn = null;
3.
4.
5. try{
6. Class.forName("com.mys
ql.jdbc.Driver").newInstance();
7. conn=
DriverManager.getConnection("jdbc:
mysql://localhost/estudo","root","
123");
8. out.println("conectado
ao banco");
9.
10. PreparedStatement stmt
= conn.prepareStatement("insert
into imagem(imagem)values(?)");
11. stmt.setString(1, "ima
gem");
12. stmt.execute();
13. stmt.close();
14. }catch(ClassNotFoundExce
ption e){
15. e.printStackTrace(
);
16. }
17. %>





05/03/2009 13:59:09
Assunto: Re:Cadastrar Imagem no mysql usando JSP

snowblacksoul
Virtual Machine Man


Membro desde: 27/04/2008 11:46:37
Mensagens: 564
Offline
Gente acho que conseguir gravar no banco
de dados, mas acho que meu cdigo est
grotesco se tiver por favor falem pra que
possa melhorar. Agora gostaria de mostrar
em uma JSP a imagem que gravei no banco
como fao, essa no tenho a menor idia!!!
view plaincopy to clipboardprint?
1. <%
2. Connection conn = null;
3. //String user = "root";
4. //String password =
"123";
5. //String
url="jdbc:mysql://localhost/estudo
","root","123");
6. //conectar com o banco de
dados
7. try{
8. Class.forName("com.mys
ql.jdbc.Driver").newInstance();
9. //return
DriverManager.getConnection(url,us
er,password);
10. conn=
DriverManager.getConnection("jdbc:
mysql://localhost/estudo","root","
123");
11. out.println("conectado
ao banco");
12.
13. PreparedStatement stmt
= conn.prepareStatement("insert
into imagem(imagem)values(?)");
14. stmt.setString(1, "ima
gem");
15. stmt.execute();
16. stmt.close();
17. }catch(ClassNotFoundExce
ption e){
18. e.printStackTrace(
);
19. }
20. %>



05/03/2009 14:02:14
Assunto: Cadastrar Imagem no mysql usando JSP

paulofernandesjr
JavaEvangelist

Membro desde: 04/10/2007 12:36:58
Mensagens: 477
Localizao: So Paulo - Capital
Offline
cade o upload?

Paulo Fernandes
Desenvolvedor Java

Aprenda CSS
Twitter





05/03/2009 14:10:34
Assunto: Re:Cadastrar Imagem no mysql usando JSP


snowblacksoul
Virtual Machine Man


Membro desde: 27/04/2008 11:46:37
Mensagens: 564
Offline
Cara l em cima tem o formulario que pega a
imagem






05/03/2009 14:12:39
Assunto: Cadastrar Imagem no mysql usando JSP


paulofernandesjr
JavaEvangelist

Membro desde: 04/10/2007 12:36:58
Mensagens: 477
Localizao: So Paulo - Capital
Offline
voc esta vendo a imagem no servidor?

esta meio estranho, pois o seu formulario
para o envio de imagem e voc no esta
nem recuperando os dados que foram
enviados via post
This message was edited 1 time. Last update was at
05/03/2009 14:13:04


Paulo Fernandes
Desenvolvedor Java

Aprenda CSS
Twitter





05/03/2009 14:23:09
Assunto: Re:Cadastrar Imagem no mysql usando JSP


snowblacksoul
Virtual Machine Man


Membro desde: 27/04/2008 11:46:37
Mensagens: 564
Offline
mas j esta gravando






05/03/2009 14:57:03
Assunto: Re:Cadastrar Imagem no mysql usando JSP


snowblacksoul
Virtual Machine Man
esta gravando texto ao invs de imagem!!
como fazer entao o upload?!






Membro desde: 27/04/2008 11:46:37
Mensagens: 564
Offline


05/03/2009 15:01:34
Assunto: Cadastrar Imagem no mysql usando JSP


paulofernandesjr
JavaEvangelist

Membro desde: 04/10/2007 12:36:58
Mensagens: 477
Localizao: So Paulo - Capital
Offline
http://www.google.com.br/search?q=jsp+upl
oad&ie=ut...t-BR:official&client=firefox-a


Paulo Fernandes
Desenvolvedor Java

Aprenda CSS
Twitter

Você também pode gostar