MySQL gehört zu den beliebten Datenbank-Management-Systemen. Es kann verwendet werden, um Daten zu speichern und abzurufen, die entsprechend den Anwendungen entwickelt wurden. Die meisten Anwendungen sind erforderlich, um die Bilder zu verwalten. Dieses Tutorial bietet die Optionen zum Speichern von Bildern in einer MySQL-Tabelle.
Hinweise: Profis können Ihnen bei der Entwicklung von Bilddatenbanken für Ihr Unternehmen oder Ihr Projekt helfen.
Speichern Sie den Bildpfad
Der einfachste Ansatz besteht darin, Bilder in Verzeichnissen im Dateisystem zu speichern und Verweise auf die Fotos in der Datenbank wie SQL & MySQL zu speichern, z. B. den Pfad zum Bild, den Bildnamen usw. Alternativ können Sie sogar Bilder auf einem CDN oder zahlreichen Hosts in einem großen Gebiet aufbewahren und ihre Referenzen behalten, um auf diese Ressourcen in dieser Datenbank zuzugreifen.
Auf diese Weise müssen wir nicht das gesamte Bild in der Datenbank speichern, sondern nur den Pfad zu dem in einem Ordner gespeicherten Bild. Das Speichern von Bildern ist gut, wenn sich die Bilder immer im selben Ordner befinden, dh wenn jedes Bild seinen eindeutigen Pfad hat, der immer derselbe ist. In einigen Fällen müssen die Bilder jedoch von einem Ordner in einen anderen übertragen werden. In diesem Fall besteht die beste Lösung darin, einen dynamischen Pfad zur Bilddatei zu erstellen, sodass, wenn das Bild verschoben werden muss, keine Verpflichtung besteht, die Datenbank zu ändern.
Wir können eine vorhandene Tabelle aktualisieren, um ein Bildpfadfeld hinzuzufügen, wie unten gezeigt.
// Add column to store image path
ALTER TABLE `my_table`
ADD COLUMN `image_pathLocation` varchar(1024)
Ein anderer Ansatz besteht darin, eine separate Tabelle für die Bilder zu erstellen und mithilfe der Bildtabelle eine Referenz in Tabellen hinzuzufügen. Auf diese Weise können mehrere Tabellen die Bilder in einer einzigen Tabelle speichern. Sie können die unten genannte Tabelle verwenden, um Ihre Bilder zu speichern.
// Create the Image table
CREATE TABLE image (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(1024) NOT NULL,
`title` VARCHAR(2048) NULL,
`description` VARCHAR(4096) NULL,
`extension` VARCHAR(160) NULL,
`directory` VARCHAR(512) NULL,
`size` FLOAT NOT NULL,
`type` VARCHAR(50) NOT NULL,
`url` VARCHAR(2048) NULL,
`medium` VARCHAR(1024) NULL,
`small` VARCHAR(1024) NULL,
`thumb` VARCHAR(1024) NULL,
`caption` VARCHAR(1024) NULL,
`altText` VARCHAR(512) NULL,
`createdAt` DATETIME NULL,
`modifiedAt` DATETIME NULL,
PRIMARY KEY (`id`),
INDEX `idx_image_name` (`name` ASC),
INDEX `idx_image_type` (`type` ASC)
) ENGINE = InnoDB;
In der oben genannten Tabelle ist der Name der tatsächliche Name des zu speichernden Bildes, und der Titel ist optional, um Eingaben von den Benutzern zu erhalten, die das Bild hochladen. Außerdem kann die Spalte type entscheiden, ob das Image lokal oder auf einem CDN gespeichert wird. Wenn es lokal gespeichert ist, können wir das Spaltenverzeichnis verwenden, um den Pfad anzugeben, in dem das Bild gespeichert ist. Im Fall von CDN können wir die Spalten-URL verwenden, um den Basispfad des Bildes abzurufen. Neben Typ, Verzeichnis und URL können wir auch small, medium und large verwenden, um dasselbe Bild in mehreren Größen zu speichern.
Wenn Sie die Bilder verwenden müssen, rufen Sie sie über den angegebenen Pfad von der Festplatte ab. Der Vorteil dieses Ansatzes besteht darin, dass die Bilder nicht unbedingt auf einer Festplatte gespeichert werden müssen; wir können eine URL anstelle eines Bildpfads speichern und Bilder von jedem internetfähigen Ort abrufen.
Bild in MySQL-Tabelle speichern
Eine andere Möglichkeit, ein Bild in der MySQL-Datenbank zu speichern, besteht darin, es in der Tabelle selbst zu speichern. Die Bildgröße kann ziemlich groß sein, manchmal größer als 1 oder 2 MB. Das Speichern von Bildern in einer Datenbank kann also Ihre Datenbank und das Netzwerk zwischen Ihrer Datenbank und Ihrem Webserver zusätzlich belasten, wenn sie sich auf separaten Hosts befinden.
Bei diesem Ansatz können die Bilddateien schwierig zu verwalten sein. Sie müssen sie zuerst aus der Datenbank wiederherstellen, bevor andere Vorgänge ausgeführt werden sollen.
Es gibt einige Ausnahmen, bei denen die gesamte Datenbank im RAM gespeichert ist. MySQL-Datenbanken werden sequenziell auf einer Festplatte gespeichert. Dies bedeutet, dass Ihre Datenbankbilddateien in Blobs konvertiert, in eine Datenbank eingebettet und dann auf einer Festplatte gespeichert werden. Wir können viele Probleme vermeiden, indem wir sie einfach auf einer Festplatte speichern, wie im ersten Ansatz erwähnt.
Erstellen Sie nun die Tabelle Image, um die Bilder in der Datenbank zu speichern. Ich habe id verwendet, um jedes Bild zu identifizieren, und Caption, um den Namen des Bildes für Anzeigezwecke zu speichern. Die Spalte picture speichert das Bild in der Tabelle mit dem Datentyp LONGBLOB.
// Create the Image table
CREATE TABLE image (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(1024) NOT NULL,
`title` VARCHAR(2048) NULL,
`description` VARCHAR(4096) NULL,
`extension` VARCHAR(160) NULL,
`size` FLOAT NOT NULL,
`caption` VARCHAR(1024) NULL,
`altText` VARCHAR(512) NULL,
`picture` LONGBLOB NOT NULL,
`createdAt` DATETIME NULL,
`modifiedAt` DATETIME NULL,
PRIMARY KEY (`id`),
INDEX `idx_image_name` (`name` ASC),
INDEX `idx_image_type` (`type` ASC)
) ENGINE = InnoDB;
Zusammenfassung
In diesem Lernprogramm wurden die Optionen zum Speichern von Bildern mithilfe der MySQL-Datenbank bereitgestellt. Der gleiche Ansatz kann für andere Datenbanken verfolgt werden.