Introdução Em muitos casos, precisamos salvar imagens no banco de dados. Em alguns aplicativos, existem algumas informações confidenciais que não podem ser armazenadas no sistema de arquivos, porque quaisquer imagens armazenadas no sistema de arquivos podem ser facilmente obtidas ilegalmente pelo usuário.
Este artigo discutirá como salvar imagens em um banco de dados SQL SERVER em ASP.NET.
Neste artigo aprenderemos sobre os seguintes aspectos:
l Requisitos para upload de arquivos de imagem
l Usando objetos Strem
l Obtenha o tamanho e o tipo da imagem carregada
l Como usar o método InputStream?
Requisitos para upload de arquivos de imagem Antes de começarmos a enviar, precisamos fazer duas coisas importantes
O atributo enctype da tag #Form precisa ser definido como o seguinte formato:
enctype="multipart/form-data"
#Forneça um controle HTML que permite aos usuários selecionar arquivos de imagem:
<tipo de entrada=arquivo>
#Também faça referência ao namespace System.IO para processar objetos Strem. Os três itens acima devem ser aplicados a páginas aspx. Existem também os seguintes requisitos no SQL SERVER:
#Uma tabela com pelo menos um tipo de campo Imagem
#Além disso, seria melhor ter um campo do tipo Varchar usado para armazenar tipos de imagens. Então, temos uma tabela de dados com um campo do tipo Imagem e um <input type=file> (controle de arquivo HTML). Também precisamos de um botão de envio no qual o usuário possa clicar após selecionar a imagem. No evento OnClick do botão precisamos obter o conteúdo do arquivo de imagem e finalmente inseri-lo na tabela de dados. Vamos dar uma olhada no evento OnClick do botão, que lê a imagem e a insere na tabela de dados.
Enviar código do evento OnClick do botão
http://blog.downcodes.com/
Dim intImageSize como Int64
Dim strImageType como string
Dim ImageStream As Stream
' Obtém o tamanho da imagem
intImageSize = PersonImage.PostedFile.ContentLength
' Obtém o tipo de imagem
strImageType = PersonImage.PostedFile.ContentType
'Lê a imagem
ImageStream = PersonImage.PostedFile.InputStream
Dim ImageContent (intImageSize) como byte
Dim intStatus como inteiro
intStatus = ImageStream.Read(ImageContent, 0, intImageSize)
' Cria instância de conexão e objeto de comando
Dim myConnection como novo SqlConnection(ConfigurationSettings.AppSettings("ConnectionString"))
Dim myCommand As New SqlCommand("sp_person_isp", myConnection)
' Marca o comando como um SPROC
myCommand.CommandType = CommandType.StoredProcedure
' Adicionar parâmetros ao SPROC
Dim prmPersonImage como novo SqlParameter("@PersonImage", SqlDbType.Image)
prmPersonImage.Value = ImageContent
myCommand.Parameters.Add(prmPersonImage)
Dim prmPersonImageType As New SqlParameter("@PersonImageType", SqlDbType.VarChar, 255)
prmPersonImageType.Value = strImageType
myCommand.Parameters.Add(prmPersonImageType)
Tente
minhaConexão.Open()
meuCommand.ExecuteNonQuery()
minhaConexão.Close()
Response.Write("Nova pessoa adicionada com sucesso!")
Capturar SQLexc como SqlException
Response.Write("Falha na inserção. Os detalhes do erro são: "& SQLexc.ToString())
Finalizar tentativa
Como funciona?
O objeto PersonImage é o controle HTMLInputFile. Primeiro precisamos obter o tamanho da imagem inserida, o que é conseguido pelo seguinte método:
intImageSize = PersonImage.PostedFile.ContentLength
Em seguida, você precisa obter o tipo de imagem por meio da propriedade ContentType. A última e mais importante coisa é obter o fluxo do arquivo de imagem, o que é conseguido através dos seguintes métodos:
ImageStream = PersonImage.PostedFile.InputStream
Temos um array de bytes ImageContent, que está pronto para ser usado para salvar o conteúdo da imagem. A imagem inteira é lida através do método Read do objeto Stream. Este método possui três parâmetros, a saber:
#O local de destino do conteúdo da imagem copiada
#Posição inicial de leitura
#A subseção que precisa ser lida é declarada da seguinte forma:
intStatus = ImageStream.Read(ImageContent, 0, intImageSize)
Agora, lemos todo o conteúdo da imagem. Em seguida, precisamos inserir o conteúdo da imagem na tabela de dados SQL. Usaremos um procedimento armazenado para inserir o tipo de imagem e a imagem na tabela de dados SQL. Se você viu a listagem de código acima, saberá que definimos o tipo de dados como SqlDbType.Image. Dessa forma, salvamos a imagem com sucesso no banco de dados SQL SERVER.