sql >> Database teknologi >  >> RDS >> Mysql

Sådan gemmer du billeder i MySQL-databasen

MySQL er blandt de populære databasestyringssystemer. Det kan bruges til at gemme og hente data designet i henhold til applikationerne. De fleste af applikationerne er nødvendige for at administrere billederne. Denne vejledning giver mulighed for at gemme billeder i en MySQL-tabel.

Noter :Professionelle kan hjælpe dig med udvikling af billeddatabaser til din virksomhed eller dit projekt.

Gem billedstien

Den enkleste tilgang er at gemme billeder i mapper på filsystemet og gemme referencer til billederne i databasen som SQL &MySQL, for eksempel stien til billedet, billednavnet og så videre. Alternativt kan du endda beholde billeder på et CDN eller adskillige værter på tværs af et stort område af betydeligt territorium og beholde deres referencer for at få adgang til disse ressourcer i den database.

På denne måde er vi ikke forpligtet til at opbevare hele billedet i databasen, men kun at gemme stien til billedet, der er gemt i en mappe. Lagring af billeder er godt, hvis billederne altid vil være i den samme mappe, dvs. hvis hvert billede vil have sin unikke sti, der altid vil være den samme. I nogle tilfælde skal billederne dog overføres fra en mappe til en anden. I så fald er den bedste løsning at oprette en dynamisk sti til billedfilen, så hvis billedet skal flyttes, vil der ikke være nogen forpligtelse til at ændre databasen.

Vi kan opdatere en eksisterende tabel for at tilføje et billedstifelt som vist nedenfor.

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

En anden fremgangsmåde er at oprette en separat tabel til billederne og tilføje en reference i tabeller ved hjælp af billedtabellen. På denne måde kan flere tabeller gemme billederne i en enkelt tabel. Du kan bruge nedenstående tabel til at gemme dine billeder.

// 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 ovennævnte tabel er navnet det faktiske navn på det billede, der gemmes, og titlen er valgfri for at få input fra de brugere, der uploader billedet. Typekolonnen kan også bestemme, om billedet er gemt lokalt eller på et CDN. Hvis det er gemt lokalt, kan vi bruge kolonnebiblioteket til at angive stien, hvor billedet er gemt. I tilfælde af CDN kan vi bruge kolonnens URL til at få billedets basissti. Ud over type, mappe og URL kan vi også bruge small, medium og large til at gemme det samme billede i flere størrelser.

Når du skal bruge billederne, skal du hente dem fra disken ved at bruge den angivne sti. Denne tilgangs fordel er, at billederne ikke nødvendigvis skal gemmes på en disk; vi kan holde en URL i stedet for en billedsti og hente billeder fra enhver internettilgængelig placering.

Gem billede i MySQL-tabel

En anden måde at gemme et billede i MySQL-databasen er at gemme det i selve tabellen. Billedstørrelsen kan være ret stor, nogle gange større end 1 eller 2 MB. Så lagring af billeder i en database kan lægge yderligere belastning på din database og netværket mellem din database og din webserver, hvis de er på separate værter.


I denne tilgang kan billedfilerne være udfordrende at administrere. Du skal først gendanne dem fra databasen, før andre handlinger skal udføres.


Der er nogle undtagelser, hvor hele databasen er gemt i RAM. MySQL-databaser er sekventielt gemt på en disk. Det betyder, at dine databasebilledfiler konverteres til blobs, indlejres i en database og derefter opbevares på en disk. Vi kan undgå en masse problemer ved blot at gemme dem på en disk som nævnt i den første tilgang.

Opret nu tabellen Billede for at gemme billederne i databasen. Jeg har brugt id til at identificere hvert billede og billedtekst til at gemme navnet på billedet til visningsformål. billedkolonnen gemmer billedet i tabellen ved hjælp af datatypen som 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;

Oversigt

Denne vejledning gav mulighederne for at gemme billeder ved hjælp af MySQL-databasen. Den samme tilgang kan følges for andre databaser.


  1. Sådan omdøbes en database i MySQL

  2. Er mysql_real_escape_string() og mysql_escape_string() tilstrækkelige til appsikkerhed?

  3. Sådan ser du den faktiske Oracle SQL-sætning, der udføres

  4. Indsættelse af flere rækker i mysql