Introduzindo imagens na base de dados e indica-la em GridView com Handler.ashx Introducao Este artigo explica o metodo de introduzir imagens na base de dados do usuario do SQL e exibi-la em um controle do ASP.NET GridView com a ajuda de Handler.aspx. Descricao Voce viu alguma aplicacao ou Web Site sem imagens? Nao, voce nao viu. As imagens desempenham um papel principal no desenvolvimento da aplicacao da internet. Ou e um web site de HTML estatico ou uma aplicacao avancada de RAD, tudo e construido junto com imagens. Se sua aplicacao for um site de comercio eletronico ou portal da galeria de imagens, definitivamente voce tem que sofrer para guardar as imagens em lugares diferentes com tamanhos e tipos diferentes. E nao e um trabalho o facil controlar aquelas imagens nao desejadas e antigas a serem removidas da pasta de imagens. Assim o seu tempo e esforco e claramente consumindo. Para fazer sua tarefa mais facil, este artigo explica os metodos para armazenar as imagens no banco de dados. Ha muitas vantagens de conservar as imagens na base de dados. A vantagem principal e gerencia facil das imagens. Voce pode controlar o numero e o tamanho das imagens armazenadas em sua base. Voce pode remover todas as imagens desnecessarias da base de dados em um unico comando sql e voce pode fazer o backup das imagens facilmente. Introduzindo a imagem na base de dados Para comecar, deixe-me explicar a estrutura da tabela da base de dados que vamos usar para introduzir a imagem. A tabela que voce criara para armazenar a imagem deve conter uma coluna do tipo de dados IMAGE. Este tipo de dados de imagem e de dados binarios Variable-length com um comprimento maximo de 2^31 - (2.147.483.647) bytes 1. Para armazenar a imagem nesta coluna nos a converteremos em um array binario com a ajuda de algumas classes do namespace IO para entao introduzi-la na tabela. Para demonstracao, nos vamos criar uma tabela com nome ImageGallery com as quatro colunas na seguinte estrutura: Nome da coluna Descricao Tipo de dados Img_Id Coluna da identidade para a identificacao da imagem uniqueidentifier Image_Content Armazenar a imagem no formato binario image Image_Type Armazenar o formato da imagem (i.e. JPEG, GIF, PNG, etc.) varchar Image_Size Armazenar o tamanho da imagem bigint Depois que nos criamos a tabela na base de dados, nos podemos comecar a parte de codificacao. 1. Abra sua aplicacao web no Visual Studio 2005, arraste um controle do Upload da arquivo e um controle da Botao na Web page. 2. No code-behind adicione o namespace System.IO. using System.IO; 3. No evento de Button1_Click do botao, escrever o seguinte codigo: if (FileUpload1.PostedFile != null && FileUpload1.PostedFile.FileName != "") { byte[] myimage = new byte[FileUpload1.PostedFile.ContentLength]; HttpPostedFile Image = FileUpload1.PostedFile; Image.InputStream.Read(myimage, 0, (int)FileUpload1.PostedFile.ContentLength); SqlConnection myConnection = new SqlConnection(Your Connection String); SqlCommand storeimage = new SqlCommand("INSERT INTO ImageGallery " +"(Image_Content, Image_Type, Image_Size) " +" values (@image, @imagetype, @imagesize)", myConnection); storeimage.Parameters.Add("@image", SqlDbType.Image, myimage.Length).Value = myimage; storeimage.Parameters.Add("@imagetype", SqlDbType.VarChar, 100).Value = FileUpload1.PostedFile.ContentType; storeimage.Parameters.Add("@imagesize", SqlDbType.BigInt, 99999).Value = FileUpload1.PostedFile.ContentLength; myConnection.Open(); storeimage.ExecuteNonQuery(); myConnection.Close(); } Para fazer o upload da imagem