Вы находитесь на странице: 1из 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-nomysql/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

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?

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

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

cade o upload?

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

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

Cara l em cima tem o formulario que pega a imagem

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

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

paulofernandesjr
JavaEvangelist

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

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

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

mas j esta gravando

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

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

http://www.google.com.br/search?q=jsp+upl oad&ie=ut...t-BR:official&client=firefox-a

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

Paulo Fernandes Desenvolvedor Java Aprenda CSS Twitter

Вам также может понравиться