Einführung In vielen Fällen müssen wir Bilder in der Datenbank speichern. In einigen Anwendungen gibt es einige vertrauliche Informationen, die nicht im Dateisystem gespeichert werden können, da im Dateisystem gespeicherte Bilder leicht vom Benutzer illegal erlangt werden können.
In diesem Artikel wird erläutert, wie Bilder in einer SQL SERVER-Datenbank in ASP.NET gespeichert werden.
In diesem Artikel erfahren wir mehr über die folgenden Aspekte:
l Voraussetzungen für das Hochladen von Bilddateien
l Verwendung von Strem-Objekten
l Ermitteln Sie die Größe und den Typ des hochgeladenen Bildes
l Wie verwende ich die InputStream-Methode?
Anforderungen für das Hochladen von Bilddateien Bevor wir mit dem Hochladen beginnen, müssen wir zwei wichtige Dinge tun
Das enctype-Attribut des #Form-Tags muss auf das folgende Format eingestellt werden:
enctype="multipart/form-data"
#Stellen Sie ein HTML-Steuerelement bereit, mit dem Benutzer Bilddateien auswählen können:
<Eingabetyp=Datei>
#Verweisen Sie auch auf den System.IO-Namespace, um Strem-Objekte zu verarbeiten. Die oben genannten drei Elemente müssen auf ASPX-Seiten angewendet werden. Darüber hinaus gibt es in SQL SERVER folgende Anforderungen:
#Eine Tabelle mit mindestens einem Feldtyp „Bild“.
#Darüber hinaus wäre es besser, ein Feld vom Typ Varchar zum Speichern von Bildtypen zu verwenden. Dann haben wir eine Datentabelle mit einem Feldtyp „Bild“ und einem <Eingabetyp=Datei> (HTML-Dateisteuerung). Wir benötigen außerdem eine Schaltfläche zum Senden, auf die der Benutzer klicken kann, nachdem er das Bild ausgewählt hat. Im OnClick-Ereignis der Schaltfläche müssen wir den Inhalt der Bilddatei abrufen und ihn schließlich in die Datentabelle einfügen. Werfen wir einen Blick auf das OnClick-Ereignis der Schaltfläche, das das Bild liest und in die Datentabelle einfügt.
OnClick-Ereigniscode der Schaltfläche „Senden“.
http://blog.downcodes.com/
Dimmen Sie intImageSize als Int64
Dimmen Sie strImageType als String
Dim ImageStream As Stream
' Ruft die Größe des Bildes ab
intImageSize = PersonImage.PostedFile.ContentLength
' Ruft den Bildtyp ab
strImageType = PersonImage.PostedFile.ContentType
' Liest das Bild
ImageStream = PersonImage.PostedFile.InputStream
Dim ImageContent(intImageSize) As Byte
Dimmen Sie intStatus als Ganzzahl
intStatus = ImageStream.Read(ImageContent, 0, intImageSize)
' Instanz von Verbindung und Befehlsobjekt erstellen
Dimmen Sie myConnection als neue SqlConnection(ConfigurationSettings.AppSettings("ConnectionString"))
Dimmen Sie myCommand als neu. SqlCommand("sp_person_isp", myConnection)
' Markieren Sie den Befehl als SPROC
myCommand.CommandType = CommandType.StoredProcedure
' Parameter zu SPROC hinzufügen
Dimmen Sie prmPersonImage als neuen 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)
Versuchen Sie es
myConnection.Open()
myCommand.ExecuteNonQuery()
myConnection.Close()
Response.Write("Neue Person erfolgreich hinzugefügt!")
Fangen Sie SQLexc als SqlException ab
Response.Write("Einfügen fehlgeschlagen. Fehlerdetails sind: " & SQLexc.ToString())
Beenden Sie den Versuch
Wie funktioniert es?
Das Objekt PersonImage ist das HTMLInputFile-Steuerelement. Zuerst müssen wir die Größe des eingefügten Bildes ermitteln, was mit der folgenden Methode erreicht wird:
intImageSize = PersonImage.PostedFile.ContentLength
Als Nächstes müssen Sie den Bildtyp über die ContentType-Eigenschaft abrufen. Der letzte und wichtigste Schritt besteht darin, den Bilddateistream abzurufen, was durch die folgenden Methoden erreicht wird:
ImageStream = PersonImage.PostedFile.InputStream
Wir haben ein Byte-Array ImageContent, das zum Speichern des Bildinhalts verwendet werden kann. Das gesamte Bild wird über die Read-Methode des Stream-Objekts gelesen. Diese Methode verfügt über drei Parameter, nämlich:
#Der Zielspeicherort des kopierten Bildinhalts
#Startposition des Lesens
#Der zu lesende Unterabschnitt wird wie folgt deklariert:
intStatus = ImageStream.Read(ImageContent, 0, intImageSize)
Jetzt lesen wir den gesamten Bildinhalt. Als nächstes müssen wir den Bildinhalt in die SQL-Datentabelle einfügen. Wir verwenden eine gespeicherte Prozedur, um den Bildtyp und das Bild in die SQL-Datentabelle einzufügen. Wenn Sie die Codeliste oben gesehen haben, wissen Sie, dass wir den Datentyp auf SqlDbType.Image festgelegt haben. Auf diese Weise haben wir das Bild erfolgreich in der SQL SERVER-Datenbank gespeichert.