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

So löschen Sie zusätzliche Kernel in Ubuntu

Schritt 1: Den aktuellen Kernel anzeigen rew $ un...

Sublime Text - Empfohlene Methode zum Festlegen von Browser-Tastenkombinationen

Codeeffekte werden häufig in unterschiedlichen Br...

MySQL Dual-Machine Hot-Standby-Implementierungslösung [testbar]

Inhaltsverzeichnis 1. Konzept 2. Umgebungsbeschre...

Bringen Sie Ihnen bei, wie Sie die rekursive Methode von MySQL8 verwenden

Ich habe zuvor einen Artikel über rekursive Abfra...

Eine kurze Erläuterung des Lazy-Loading-Attributmusters in JavaScript

Inhaltsverzeichnis 1. Einleitung 2. On-Demand-Att...

Detaillierte Erklärung des Overlay-Netzwerks in Docker

Übersetzt aus der offiziellen Docker-Dokumentatio...

Lichtschalter mit js steuern

Verwenden Sie js, um den Lichtschalter zu Ihrer R...

Detaillierte Beispiele zur Float-Verwendung in HTML/CSS

1. Grundlegende Anwendungsbeispiele für Float 1. ...

Einfache und schnelle Einführung in die React-Routing-Entwicklung

Installieren Geben Sie zur Installation den folge...