Introduction Dans de nombreux cas, nous devons enregistrer des images dans la base de données. Dans certaines applications, certaines informations sensibles ne peuvent pas être stockées dans le système de fichiers, car les images stockées sur le système de fichiers peuvent facilement être obtenues illégalement par l'utilisateur.
Cet article explique comment enregistrer des images dans une base de données SQL SERVER dans ASP.NET.
Dans cet article, nous découvrirons les aspects suivants :
l Conditions requises pour le téléchargement de fichiers image
l Utiliser des objets Strem
l Obtenez la taille et le type de l'image téléchargée
l Comment utiliser la méthode InputStream ?
Conditions requises pour le téléchargement de fichiers image Avant de commencer le téléchargement, nous devons faire deux choses importantes
L'attribut enctype de la balise #Form doit être défini sur la forme suivante :
enctype="multipart/form-data"
#Fournir un contrôle HTML qui permet aux utilisateurs de sélectionner des fichiers image :
<type d'entrée=fichier>
#Référencez également l'espace de noms System.IO pour traiter les objets Strem. Les trois éléments ci-dessus doivent être appliqués aux pages aspx. Il existe également les exigences suivantes dans SQL SERVER :
#Une table avec au moins un champ de type Image
#De plus, il serait préférable d'avoir un champ de type Varchar utilisé pour stocker les types d'images. Ensuite, nous avons une table de données avec un champ de type Image et un <input type=file> (contrôle de fichier HTML). Nous avons également besoin d'un bouton de soumission sur lequel l'utilisateur peut cliquer après avoir sélectionné l'image. Dans l'événement OnClick du bouton, nous devons obtenir le contenu du fichier image et enfin l'insérer dans la table de données. Jetons un coup d'œil à l'événement OnClick du bouton, qui lit l'image et l'insère dans la table de données.
Code d'événement OnClick du bouton Soumettre
http://blog.downcodes.com/
Dim intImageSize As Int64
Dim strImageType en tant que chaîne
Dim ImageStream As Stream
'obtient la taille de l'image
intImageSize = PersonImage.PostedFile.ContentLength
'Obtient le type d'image
strImageType = PersonImage.PostedFile.ContentType
' Lit l'image
ImageStream = PersonImage.PostedFile.InputStream
Dim ImageContent (intImageSize) en tant qu'octet
Dim intStatus comme entier
intStatus = ImageStream.Read(ImageContent, 0, intImageSize)
'Créer une instance de connexion et un objet de commande
Atténuer myConnection en tant que nouveau SqlConnection(ConfigurationSettings.AppSettings("ConnectionString"))
Dim myCommand As New SqlCommand("sp_person_isp", myConnection)
' Marquer la commande comme SPROC
myCommand.CommandType = CommandType.StoredProcedure
'Ajouter des paramètres à SPROC
Dim prmPersonImage comme nouveau 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)
Essayez
maConnexion.Open()
maCommand.ExecuteNonQuery()
maConnexion.Close()
Response.Write("Nouvelle personne ajoutée avec succès !")
Attraper SQLexc en tant que SqlException
Response.Write("Échec de l'insertion. Les détails de l'erreur sont : " & SQLexc.ToString())
Fin Essayer
Comment ça marche ?
L'objet PersonImage est le contrôle HTMLInputFile. Nous devons d’abord obtenir la taille de l’image insérée, ce qui est obtenu par la méthode suivante :
intImageSize = PersonImage.PostedFile.ContentLength
Ensuite, vous devez obtenir le type d'image via la propriété ContentType. La dernière et la plus importante chose est d'obtenir le flux du fichier image, ce qui est réalisé grâce aux méthodes suivantes :
ImageStream = PersonImage.PostedFile.InputStream
Nous avons un tableau d'octets ImageContent, qui est prêt à être utilisé pour enregistrer le contenu de l'image. L'image entière est lue via la méthode Read de l'objet Stream. Cette méthode a trois paramètres, à savoir :
#L'emplacement cible du contenu de l'image copié
#Position de départ de la lecture
#La sous-section qui doit être lue est déclarée comme suit :
intStatus = ImageStream.Read (ImageContent, 0, intImageSize)
Maintenant, nous lisons l’intégralité du contenu de l’image. Ensuite, nous devons insérer le contenu de l'image dans la table de données SQL. Nous utiliserons une procédure stockée pour insérer le type d'image et l'image dans la table de données SQL. Si vous avez vu la liste de codes ci-dessus, vous saurez que nous avons défini le type de données sur SqlDbType.Image. De cette manière, nous avons enregistré avec succès l'image dans la base de données SQL SERVER.