|
<< Click to Display Table of Contents >> MySql - gravando imagens |
![]() ![]()
|
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>
<asp:TextBox ID="txtNome" runat="server"></asp:TextBox>
<br />
<asp:Label ID="Label2" runat="server" Text="Imagem"></asp:Label>
<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();
}
}
}
}