de qualquer local (seu HD) para o servidor, nos temos que usar o objeto de HttpPostedFile. Apontar para o arquivo enviado ao objeto de HttpPostedFile. Entao o metodo de InputStream.Read lera o conteudo da imagem por uma sequencia dos bytes do Stream. Assim o myimage contera a imagem como dados binarios. Agora nos temos que passar estes dados no objeto de SqlCommand, que os introduzira na tabela da base de dados. Exibindo a imagem em um GridView com Handler.ashx Ate agora, o artigo explicou como introduzir imagens na base de dados. A imagem esta na base de dados no formato de dados binario. Recuperar estes dados em um Web page de ASP.NET e razoavelmente facil, mas exibi-lo nao e tao simples. O problema basico e que para mostrar uma imagem em uma pagina aspx, voce precisa adicionar um Tag da imagem que fara ligacao a um arquivo de imagem atraves do atributo src ou voce precisara por um controle da imagem em sua pagina e especificar a propriedade ImageUrl. Por exemplo: <asp:image Runat="server" ImageUrl="YourImageFilePath" ID="Image1" /> Infelizmente, esta solucao nao funcionara se voce necessitar mostrar dinamicamente dados da imagem. Embora voce possa ajustar o atributo de ImageUrl no codigo, voce nao tem nenhuma maneira ajustar programmatically o conteudo da imagem. Voce poderia primeiramente gravar os dados do arquivo da imagem no HD do web server, mas essa solucao seria dramaticamente mais lenta, desperdicaria espaco, e levanta a possibilidade de erros da concorrencia se os pedidos multiplos estivessem servidos ao mesmo tempo e todos tentassem escrever o mesmo arquivo. Nestas situacoes, a solucao e usar um recurso separado de ASP.NET que retorne os dados binarios diretamente da base de dados. Aqui a classe HTTP Handler vai nos ajudar. O que e um Handler? O ASP.NET HTTP Handler e uma classe simples que permita que voce processe um pedido e retorne uma resposta ao browser. Simplesmente nos podemos dizer que um handler e responsavel para cumprir pedidos do browser. Pode processar somente um pedido de cada vez, o que gera por sua vez o desempenho elevado. A classe handler implementa a interface IHttpHandler. Para esta demonstracao do artigo, nos exibiremos a imagem no controle GridView junto com os dados que nos armazenamos na tabela. Estao aqui as etapas requeridas para realizar isto: 1. Criar um arquivo Handler.ashx para executar a recuperacao da imagem. Esta pagina de Handler.ashx contera somente um metodo chamado ProcessRequest. Este metodo retornara dados binarios ao pedido entrante. Neste metodo, nos faremos o processo normal e o retorno da recuperacao de dados somente o campo de Image_Content como bytes do array. Codigo de exemplo abaixo: public void ProcessRequest (HttpContext context) { SqlConnection myConnection = new SqlConnection(YourConnectionString); myConnection.Open(); string sql = "Select Image_Content from ImageGallery where Img_Id=@ImageId"; SqlCommand cmd = new SqlCommand(sql, myConnection); cmd.Parameters.Add("@ImageId", SqlDbType.Int).Value = context.Request.QueryString["id"]; cmd.Prepare(); SqlDataReader dr = cmd.ExecuteReader(); dr.Read(); context.Response.ContentType = dr["Image_Type"].ToString(); context.Response.BinaryWrite((byte[])dr["Image_Content"]); } 2. Colocar um controle GridView na pagina do aspx, com a uma coluna TemplateField, adicionar um controle de imagem na secao de ItemTemplate do TemplateField. Especificar a propriedade de ImageUrl como: <asp:TemplateField> <ItemTemplate> <asp:Image