sql >> Databáze >  >> RDS >> Mysql

Jak ukládat obrázky do databáze MySQL

MySQL patří mezi oblíbené systémy pro správu databází. Lze jej použít k ukládání a získávání dat navržených podle aplikací. Ke správě obrázků je potřeba většina aplikací. Tento tutoriál poskytuje možnosti ukládání obrázků do tabulky MySQL.

Poznámky :Profesionálové vám mohou pomoci s vývojem databáze obrázků pro vaši společnost nebo váš projekt.

Uložte cestu obrázku

Nejjednodušší přístup je ukládat obrázky do adresářů v systému souborů a ukládat odkazy na fotografie v databázi, jako je SQL a MySQL, například cestu k obrázku, název obrázku atd. Alternativně můžete dokonce uchovávat obrázky na CDN nebo mnoha hostitelích na nějakém velkém rozsáhlém území a uchovávat jejich reference pro přístup k těmto zdrojům v této databázi.

Tímto způsobem nemusíme uchovávat celý obrázek v databázi, ale ukládat pouze cestu k obrázku uloženému ve složce. Ukládání obrázků je dobré, pokud obrázky budou vždy ve stejné složce, tedy pokud každý obrázek bude mít svou jedinečnou cestu, která bude vždy stejná. V některých případech je však třeba snímky přenést z jedné složky do druhé. V takovém případě je nejlepším řešením vytvořit dynamickou cestu k souboru s obrázkem, takže pokud je třeba obrázek přesunout, nevzniká povinnost upravovat databázi.

Můžeme aktualizovat existující tabulku a přidat pole cesty k obrázku, jak je znázorněno níže.

// Add column to store image path
ALTER TABLE `my_table`
ADD COLUMN `image_pathLocation` varchar(1024)

Dalším přístupem je vytvořit samostatnou tabulku pro obrázky a přidat odkaz do tabulek pomocí tabulky obrázků. Tímto způsobem může více tabulek uložit obrázky do jedné tabulky. Pro uložení obrázků můžete použít níže uvedenou tabulku.

// 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;

Ve výše uvedené tabulce je název skutečným názvem ukládaného obrázku a název je volitelný pro získání informací od uživatelů, kteří obrázek nahrávají. Sloupec type může také rozhodnout, zda je obrázek uložen lokálně nebo na CDN. Pokud je uložen lokálně, můžeme pomocí adresáře sloupců zadat cestu, kde je obrázek uložen. V případě CDN můžeme použít adresu URL sloupce k získání základní cesty obrázku. Kromě typu, adresáře a adresy URL můžeme také použít malé, střední a velké pro uložení stejného obrázku ve více velikostech.

Pokud potřebujete obrázky použít, načtěte je z disku pomocí zadané cesty. Výhodou tohoto přístupu je, že obrázky nemusí být nutně uloženy na disku; místo cesty k obrázku můžeme ponechat adresu URL a načíst obrázky z jakéhokoli místa dostupného na internetu.

Uložení obrázku do tabulky MySQL

Dalším způsobem, jak uložit obrázek do databáze MySQL, je uložit jej do tabulky samotné. Velikost obrázků může být poměrně velká, někdy větší než 1 nebo 2 MB. Takže ukládání obrázků do databáze může dodatečně zatížit vaši databázi a síť mezi vaší databází a webovým serverem, pokud jsou na samostatných hostitelích.


Při tomto přístupu může být správa obrazových souborů náročná. Před provedením dalších operací je musíte nejprve obnovit z databáze.


Existují výjimky, kdy je celá databáze uložena v paměti RAM. Databáze MySQL jsou postupně ukládány na disk. To znamená, že soubory obrázků databáze jsou převedeny na objekty blob, vloženy do databáze a poté uloženy na disk. Mnoha problémům se můžeme vyhnout tím, že je jednoduše uložíme na disk, jak je uvedeno v prvním přístupu.

Nyní vytvořte tabulku Image pro uložení obrázků do databáze. Použil jsem id k identifikaci každého obrázku a popis k uložení názvu obrázku pro účely zobrazení. sloupec obrázků uloží obrázek do tabulky pomocí datového typu 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;

Shrnutí

Tento tutoriál poskytuje možnosti ukládání obrázků pomocí databáze MySQL. Stejný přístup lze použít pro jiné databáze.


  1. Monitorování výkonu MariaDB v hybridním cloudu

  2. Jak importovat data souboru CSV do tabulky PostgreSQL?

  3. Funkce LTRIM() v Oracle

  4. Použijte DB_ID() k vrácení ID databáze na SQL Server