Problemas Com Fotos C#
14/04/2011
0
Frederico Albuquerque
Posts
14/04/2011
Paulo Freire
minha tabela esta assim:
ID INT AUNTOINCREMENT(1)NOME VARCHAR(50)FOTO VARBINARY(MAX)TIPO_FOTO VARCHAR(20)
Uso Binary por poder cocloar qualquer coisa lá, JPEG, GIF, PNG, PDF, BMP, SWF
Beleza, coloque um TextoBox para o nome e um FileUpload para carregar a foto, ok
Eu gosto de usar Store Procedure, mas fica a seu gosto
Um botão incluir:
public void IncluirComFoto() { //Trabsnf. foto em Bites byte[] img = FileUploadFoto.FileBytes; string tipo = FileUploadFoto.PostedFile.ContentType;
SqlCommand cmd = new SqlCommand("InserirComFoto", new SqlConnection(ConfigurationManager.ConnectionStrings["Conexao"].ConnectionString)); cmd.Connection.Open(); cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@NOME", txtNome.Text)); cmd.Parameters.Add(new SqlParameter("@FOTO", img)); cmd.Parameters.Add(new SqlParameter("@TIPO_FOTO", tipo));
try { cmd.ExecuteNonQuery();
//Mensagem lblMensagem.Text = "Membro gravado com Sucesso !!!";
} catch (SqlException ex) { Response.Write(ex.ToString()); } finally { cmd.Connection.Close(); cmd.Connection.Dispose(); //btIncluir.Enabled = true; } }
Pronto, para visualizar, crie um novo Item "Generic Handler", com o nome tipo MostrarFoto.ashx
e deixe assim:
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Configuration;using System.Data.SqlClient;
namespace ShalomWeb{ /// /// Summary description for Handler /// public class Handler : IHttpHandler {
public void ProcessRequest(HttpContext context) {
string conStr = ConfigurationManager.ConnectionStrings["Conexao"].ConnectionString;
string ID = context.Request.QueryString["ID"];
if (!string.IsNullOrEmpty(ID)) { using (SqlConnection con = new SqlConnection(conStr)) { using (SqlCommand cmd = new SqlCommand("SELECT FOTO, TIPO_FOTO FROM ALUNOS WHERE ID=@ID", con)) { cmd.Parameters.AddWithValue("@ID", Convert.ToInt32(ID));
SqlDataReader dr;
con.Open();
dr = cmd.ExecuteReader();
if (dr.Read()) { byte[] imgByte = (byte[])dr["FOTO"]; context.Response.ContentType = dr["TIPO_FOTO"].ToString(); context.Response.BinaryWrite(imgByte); } } } }
}
public bool IsReusable { get { return false; } } }}
Prontinho, basta digitar isso no seu browse MostrarFoto.aspx?ID=1
Onde ID é o ID que gravou, ok
Qualquer coisa posta ai.
05/05/2011
Jones Roberto
05/05/2011
Frederico Albuquerque
09/05/2011
Jones Roberto
sua página asp.net deverá conter 1 datalist
exemplo
<asp:DataList ID="Catalogo" runat="server" RepeatColumns="1" RepeatDirection="Horizontal"> <ItemTemplate> <div> <div> <label> Docto</label> <asp:Label ID="lbl_cod" runat="server" Text='<%# Eval("Docto")%>'></asp:Label> </div> <div> <a href='#' > <img src='<%# Eval("Foto")%>' alt="" /> </a> </div> <div> <label>Nome</label> <asp:Label ID="lbl_nome" runat="server" Text='<%# Eval("Nome")%>'></asp:Label> </div> </div> </ItemTemplate> </asp:DataList>
o correto seria vc apenas armazenar o endereço da sua imagem e não armazenar o conteudo total dela no banco ai a linha IMG ficaria assim
<img src='<%# Eval("Foto", "Fotos/galeria/") %>' alt="" />
sendo que Fotos/galeria/ seria o caminho de sua imagem no servidor onde se encontrar o sistema
e agora vamos ao code behind onde contém o codigo C#
Criei um metódo de exemplo para você
public void exibeFotos() {
SqlConnection conn = // sua conexão com o banco SQL
string comando = "SELECT * FROM TFoto where Docto=1";
SqlDataAdapter da = new MySqlDataAdapter(comando, conn); DataSet ds = new DataSet();
da.Fill(ds);
//Catalogo é o nome do Datalist //asp:DataList ID="Catalogo" Catalogo.DataSource = ds.Tables[0].DefaultView; Catalogo.DataBind();
}
Espero que ajude...
Abraço
Clique aqui para fazer login e interagir na Comunidade :)