Mehrere Möglichkeiten zum Speichern von Bildern in einer MySQL-Datenbank

Mehrere Möglichkeiten zum Speichern von Bildern in einer MySQL-Datenbank

Normalerweise müssen die von Benutzern hochgeladenen Bilder in der Datenbank gespeichert werden.

Grundsätzlich gibt es zwei Lösungen:

1. Speichern Sie den Pfad, unter dem das Bild in der Datenbank gespeichert ist.

2. Schreiben Sie das Bild in Form eines binären Datenstroms direkt in das Datenbankfeld.

Hier sind die spezifischen Methoden:

1. Speichern Sie den Upload-Pfad des Bildes in der Datenbank:

  string uppath="";//Wird zum Speichern des Bild-Upload-Pfads verwendet//Ruft den Dateinamen des hochgeladenen Bildes ab string fileFullname = this.FileUpload1.FileName;
  // Uhrzeit abrufen, zu der das Bild hochgeladen wurde. Die Verwendung der Uhrzeit als Name des Bildes kann verhindern, dass die Bilder denselben Namen haben string dataName = DateTime.Now.ToString("yyyyMMddhhmmss");
  //Bilddateinamen abrufen (ohne Erweiterung)
  Zeichenfolge Dateiname = Vollständiger Dateiname.Teilzeichenfolge(Vollständiger Dateiname.LetzterIndexvon("\\") + 1);
  //Bilderweiterungszeichenfolge abrufen Typ = fileFullname.Substring(fileFullname.LastIndexOf(".") + 1);
  //Beurteilen, ob es das erforderliche Format ist (Typ == "bmp" || Typ == "jpg" || Typ == "jpeg" || Typ == "gif" || Typ == "JPG" || Typ == "JPEG" || Typ == "BMP" || Typ == "GIF")
  {
  //Laden Sie das Bild in den Ordner mit dem angegebenen Pfad hoch this.FileUpload1.SaveAs(Server.MapPath("~/upload") + "\\" + dataName + "." + type);
  //Speichern Sie den Pfad in einer Variablen und speichern Sie den Wert der Variablen im entsprechenden Feld in der Datenbank uppath = "~/upload/" + dataName + "." + type;
  }

2. Speichern Sie das Bild als binären Datenstrom direkt in der Datenbank:

Referenzieren Sie den folgenden Namespace:

    mit System.Drawing;
  mit System.IO;
  mit System.Data.SqlClient;
  Beim Entwurf einer Datenbank ist der entsprechende Feldtyp in der Tabelle iamge
  speichern:
  //Bildpfad string strPath = this.FileUpload1.PostedFile.FileName.ToString();
  //Bild lesen FileStream fs = new System.IO.FileStream(strPath, FileMode.Open, FileAccess.Read);
  BinaryReader br = neuer BinaryReader(fs);
  byte[] foto = br.ReadBytes((int)fs.Length);
  br.Schließen();
  fs.Schließen();
  //In SqlConnection speichern myConn = neue SqlConnection("Datenquelle=.;Initialkatalog=stumanage;Benutzer-ID=sa;Passwort=123");
  string strComm = " INSERT INTO stuInfo(stuid,stuimage) VALUES(107,@photoBinary )"; //Datenbankanweisungen ausführen und SqlCommand nach Bedarf ändern myComm = new SqlCommand(strComm, myConn);
  myComm.Parameters.Add("@photoBinary", SqlDbType.Binary, Foto.Länge);
  myComm.Parameters["@photoBinary"].Wert = Foto;
  myConn.Open();
  wenn (myComm.ExecuteNonQuery() > 0)
  {
  dies.Label1.Text = "ok";
  }
  myConn.Close();
  Lesen:
  ...Verbindung zur Datenbank herstellen und dabei mycon.Open() weglassen.
  SqlCommand-Befehl = neu
  SqlCommand("select stuimage from stuInfo where stuid=107", mycon); //Ändern Sie die Abfrageanweisung nach Bedarf byte[] image = (byte[])command.ExecuteScalar ();
  //Geben Sie den Speicherpfad und den Namen des aus der Datenbank gelesenen Bildes an. String strPath = "~/Upload/zhangsan.JPG";
  Zeichenfolge strPhotoPath = Server.MapPath(strPath);
  //Speichern Sie die Bilddatei unter dem obigen Pfad und Namen. BinaryWriter bw = new BinaryWriter(File.Open(strPhotoPath,FileMode.OpenOrCreate));
  bw.Write(Bild);
  bw.Schließen();
  //Bild anzeigen this.Image1.ImageUrl = strPath;
  //Diese beiden Methoden können je nach tatsächlichem Bedarf flexibel ausgewählt werden.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • Sollten nullbare Felder in MySQL auf NULL oder NOT NULL gesetzt werden?
  • Der Unterschied zwischen den Feldtypen char, varchar und Text in MySQL
  • Die MySQL-Datenbankmigration exportiert und importiert schnell große Datenmengen
  • Shell-Skript zum Bedienen der MySQL-Datenbank zum Löschen doppelter Daten
  • MySQL implementiert eine Lösung ähnlich der Oracle-Sequenz
  • MySQL-Code zur Implementierung der Sequenzfunktion
  • Verbindung zum lokalen MySQL über Socket ''/tmp/mysql.sock''-Lösung nicht möglich
  • Eine vollständige Liste häufig verwendeter MySQL-Funktionen (klassifiziert und zusammengefasst)
  • Verwenden Sie die MySQL-Master-Slave-Konfiguration, um eine Lese-/Schreibtrennung zu erreichen und den Datenbankdruck zu verringern
  • MySQL sql_mode-Analyse und Einstellungserklärung

<<:  Virtual Box-Tutorialdiagramm zum Duplizieren virtueller Maschinen

>>:  jQuery implementiert die Formularvalidierung

Artikel empfehlen

Detaillierte Schritte zum Starten des Django-Projekts mit nginx+uwsgi

Wenn wir ein Webprojekt mit Django entwickeln, wi...

Definieren der Mindesthöhe der Inline-Elementspanne

Das Span-Tag wird häufig beim Erstellen von HTML-...

Vollständiges Beispiel der Kapselung der globalen Toast-Komponente durch Vue

Inhaltsverzeichnis Vorwort 1. Mit vue-cli 1. Defi...

MySQL Installations-Tutorial unter Windows mit Bildern und Text

Anweisungen zur MySQL-Installation MySQL ist ein ...

MySQL-Transaktionsdetails

Inhaltsverzeichnis Einführung Vier Merkmale von T...

Eine andere Art von „Abbrechen“-Button

Der „Abbrechen“-Button ist nicht Teil des notwend...

Beispielcode zur Implementierung einer Pivot-Tabelle in MySQL/MariaDB

Im vorherigen Artikel wurden mehrere Methoden zur...

Natives JS zur Implementierung der Dropdown-Box-Auswahlkomponente

In diesem Artikelbeispiel wird der spezifische JS...