Array
(
)

Problemas Com Fotos C#

Frede37
   - 14 abr 2011

Bom dia!

Estou tentando colocar uma foto que tenho guardada em tabela Curriculo campo: Foto Image(SQL SERVER 2005)  em um componente Image no WEB FORM e nao estou conseguindo. Alguem poderia me ajudar?  

Paulo Freire
|
MVP
Pontos: 10
    14 abr 2011

Vamos lá Frederico, apanhei muito com isso:
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.

Jorob
   - 05 mai 2011


Citação:

Bom dia!

Estou tentando colocar uma foto que tenho guardada em tabela Curriculo campo: Foto Image(SQL SERVER 2005)  em um componente Image no WEB FORM e nao estou conseguindo. Alguem poderia me ajudar?     Cara , como você pretende fazer???   que carregar apenas a foto ou quer listar todos os campos   se for somente a foto user DataReader ...   se for para Listar todos os Campos use um Repeater...   Dependendo do que você for usar disponibilize o codigo de sua tabela que eu criou um exemplo para você...   Abraço

Frede37
   - 05 mai 2011

Boa tarde!

Minha tabela onte tenho a foto é: SQL 2005 Nome tabela: TFoto Campos:  Docto int                 Foto   System.Byte[]                 Nome   tenho que ler a tabela TFoto atraves do campo Docto e colocar em um componente Image em WebForm o campo Foto.   que fica mais ou menos assim     WEBFORM  

<- Imagem que tenho que pegar na tabela: Foto

  Docto:   9999999 Nome: TEste do Teste da silva            

Jorob
   - 09 mai 2011

Ficou fácil agora
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/{0}") %>' alt="" />
sendo que Fotos/galeria/{0} 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

Frede37
   - 09 mai 2011

resolvido.....Muito obrigado mesmo.