MySql - gravando imagens

<< Click to Display Table of Contents >>

Navigation:  ASP.NET > Dicas avançadas >

MySql - gravando imagens

Previous pageReturn to chapter overviewNext page

mySql

 

CREATE TABLE `tb_usuario` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `nome` varchar(20) NOT NULL,

  `foto` blob,

  `mime` varchar(50) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

 

Default.aspx

 

  <form id="form1" runat="server">

  <div>

      <asp:Label ID="Label1" runat="server" Text="Nome"></asp:Label>

      &nbsp;<asp:TextBox ID="txtNome" runat="server"></asp:TextBox>

      <br />

      <asp:Label ID="Label2" runat="server" Text="Imagem"></asp:Label>

      &nbsp;<asp:FileUpload ID="fuImagem" runat="server" Height="22px" Width="424px" />

      <br />

      <br />

      <asp:Button ID="btnGravar" runat="server" OnClick="btnGravar_Click" Text="Gravar" />

      <br />

      <br />

      <asp:Label ID="lblMsg" runat="server"></asp:Label>

      <br />

      <br />

      <a href="Default2.aspx">Consulta</a></div>

  </form>

 

Default.aspx.cs

 

using System;

using System.IO;

using System.Web.UI.WebControls;

using MySql.Data.MySqlClient;

 

public partial class _Default : System.Web.UI.Page

{

  protected void Page_Load(object sender, EventArgs e)

   {

   }

 

  protected void btnGravar_Click(object sender, EventArgs e)

   {

      // não tem arquivo válido?

      if (!fuImagem.HasFile)

       {

           lblMsg.Text = "Não foi possível enviar arquivo";

          return;

       }

 

      // retorna a extensao do arquivo

      string extensao = Path.GetExtension(fuImagem.PostedFile.FileName).ToLower();

      string tipo = "";

 

      // validar o arquivo

      switch (extensao)

       {

          case ".gif":

               {

                   tipo = "image/gif";

                  break;

               }

          case ".jpeg":

          case ".jpe":

          case ".jpg":

               {

                   tipo = "image/jpeg";

                  break;

               }

          default:

               {

                   lblMsg.Text = "Tipo inválido";

                  return;

               }

       }

 

      using (MySqlConnection conexao = new MySqlConnection("server=localhost;User Id=root;database=pesquisa;Password=123456"))

       {

          try

           {

               MySqlCommand comando = new MySqlCommand("insert into tb_usuario (nome, foto, mime) values (@nome, @foto, @mime)", conexao);

 

               comando.Parameters.AddWithValue("@nome", txtNome.Text);

               comando.Parameters.AddWithValue("@mime", tipo);

 

              // converte para binario (+1 por causa do zero)

              byte[] imageBytes = new byte[fuImagem.PostedFile.InputStream.Length + 1];

               fuImagem.PostedFile.InputStream.Read(imageBytes, 0, imageBytes.Length);

 

              // manda em forma binária

               comando.Parameters.AddWithValue("@foto", imageBytes);

               conexao.Open();

               comando.ExecuteNonQuery();

 

               lblMsg.Text = "Arquivo enviado com sucesso!";

           }

          catch (Exception erro)

           {

               lblMsg.Text = erro.Message;

           }

          finally

           {

               conexao.Close();

           }

           txtNome.Text = "";

       }

   }

}

 

Default2.aspx

 

   <form id="form1" runat="server">

  <div>

      <asp:Label ID="Label1" runat="server" Text="Id"></asp:Label>

      <br />

      <asp:TextBox ID="txtId" runat="server" Height="21px" Width="43px"></asp:TextBox>

      <br />

      <br />

      <asp:Button ID="btnExibir" runat="server" OnClick="btnExibir_Click" Text="Exibir imagem" />

      <br />

      <br />

      <asp:Label ID="lblMsg" runat="server"></asp:Label>

      <br />

      <br />

      <a href="Default.aspx">Cadastro</a></div>

  </form>

 

Default2.aspx.cs

 

using System;

using MySql.Data.MySqlClient;

 

public partial class Default2 : System.Web.UI.Page

{

  protected void Page_Load(object sender, EventArgs e)

   {

   }

 

  protected void btnExibir_Click(object sender, EventArgs e)

   {

      using (MySqlConnection conexao = new MySqlConnection("server=localhost;User Id=root;database=pesquisa;Password=123456"))

       {

          try

           {

               MySqlCommand comando = new MySqlCommand("select nome, foto, mime from tb_usuario where id=@id", conexao);

               comando.Parameters.AddWithValue("@id", int.Parse(txtId.Text));

 

              // conecta e lê o registro para o reader

               conexao.Open();

               MySqlDataReader reader = comando.ExecuteReader();

 

              // conseguiu ler?

              if (reader.Read())

               {

                  // joga no response...

                   lblMsg.Text = reader["nome"].ToString();

                   Response.ContentType = reader["mime"].ToString();

                   Response.BinaryWrite((byte[])reader["foto"]);

               }

              // fecha

               reader.Close();

           }

          catch (Exception erro)

           {

               lblMsg.Text = erro.Message;

           }

          finally

           {

               conexao.Close();

           }

       }

   }

}