sql >> Databasteknik >  >> RDS >> Mysql

Hur man lagrar bilder i MySQL-databas

MySQL är ett av de populära databashanteringssystemen. Den kan användas för att lagra och hämta data utformad enligt applikationerna. De flesta av applikationerna krävs för att hantera bilderna. Denna handledning ger alternativen för att lagra bilder i en MySQL-tabell.

Anteckningar :Proffs kan hjälpa dig med bilddatabasutveckling för ditt företag eller ditt projekt.

Lagra bildsökvägen

Det enklaste tillvägagångssättet är att lagra bilder i kataloger på filsystemet och lagra referenser till fotona i databasen som SQL &MySQL, till exempel sökvägen till bilden, bildnamnet och så vidare. Alternativt kan du till och med behålla bilder på ett CDN eller flera värdar över ett stort område av betydande territorium och behålla deras referenser för att komma åt dessa resurser i den databasen.

På så sätt är vi inte skyldiga att hålla hela bilden i databasen utan att bara lagra sökvägen till bilden lagrad i en mapp. Att lagra bilder är bra om bilderna alltid kommer att finnas i samma mapp, dvs om varje bild kommer att ha sin unika sökväg som alltid kommer att vara densamma. Men i vissa fall ska bilderna överföras från en mapp till en annan. I så fall är den bästa lösningen att skapa en dynamisk sökväg till bildfilen, så om bilden måste flyttas finns det ingen skyldighet att ändra databasen.

Vi kan uppdatera en befintlig tabell för att lägga till ett bildsökvägsfält som visas nedan.

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

Ett annat tillvägagångssätt är att skapa en separat tabell för bilderna och lägga till en referens i tabeller med hjälp av bildtabellen. På så sätt kan flera tabeller lagra bilderna i en enda tabell. Du kan använda nedanstående tabell för att lagra dina bilder.

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

I den ovan nämnda tabellen är namnet det faktiska namnet på bilden som lagras, och titeln är valfri för att få input från användarna som laddar upp bilden. Typkolumnen kan också bestämma om bilden lagras lokalt eller på ett CDN. Om den är lagrad lokalt kan vi använda kolumnkatalogen för att ange sökvägen där bilden lagras. När det gäller CDN kan vi använda kolumnen URL för att få bildens bassökväg. Förutom typ, katalog och URL kan vi också använda small, medium och large för att lagra samma bild i flera storlekar.

När du behöver använda bilderna, hämta dem från disken med den angivna sökvägen. Fördelen med detta tillvägagångssätt är att bilderna inte nödvändigtvis behöver lagras på en disk; vi kan hålla en URL istället för en bildsökväg och hämta bilder från valfri internettillgänglig plats.

Lagra bild i MySQL-tabell

Ett annat sätt att lagra en bild i MySQL-databasen är att lagra den i själva tabellen. Bildstorleken kan vara ganska stor, ibland större än 1 eller 2 MB. Så att lagra bilder i en databas kan belasta din databas och nätverket mellan din databas och din webbserver ytterligare om de finns på separata värdar.


I detta tillvägagångssätt kan bildfilerna vara utmanande att hantera. Du måste först återställa dem från databasen innan andra operationer ska utföras.


Det finns några undantag där hela databasen lagras i RAM. MySQL-databaser lagras sekventiellt på en disk. Detta innebär att dina databasbildfiler konverteras till blobbar, bäddas in i en databas och förvaras sedan på en disk. Vi kan undvika många problem genom att helt enkelt lagra dem på en disk som nämndes i den första metoden.

Skapa nu tabellen Bild för att lagra bilderna i databasen. Jag har använt id för att identifiera varje bild och bildtext för att lagra namnet på bilden för visningsändamål. bildkolumnen lagrar bilden i tabellen med datatypen 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;

Sammanfattning

Den här handledningen gav alternativen att lagra bilder med MySQL-databasen. Samma tillvägagångssätt kan användas för andra databaser.


  1. Oracle Bulk Collect Exempel med hjälp av markörradtypsobjekt

  2. Åtkomst till databasen för en applikation från en annan applikation

  3. Olagligt blandning av sorteringsfel i MySql

  4. Om RM-formatelementet i Oracle