mysqlデータベースに画像を保存する方法

MySQLは、人気のあるデータベース管理システムの1つです。 それが適用に従って設計されているデータを貯え、取り出すのに使用することができます。 アプリケーションのほとんどは、画像を管理するために必要とされます。 このチュートリアルでは、MySQLテーブルにイメージを格納するためのオプションを提供します。

注:専門家はあなたの会社またはあなたのプロジェクトのためのイメージデータベースの開発との助けることができます。

画像パスの保存

最も簡単な方法は、ファイルシステム上のディレクトリに画像を保存し、SQL&MySQLのようなデータベースに写真への参照を保存するこ あるいは、あなたも、実質的な領土のいくつかの偉大な広がり全体のCDNまたは多数のホスト上の画像を保持し、そのデータベース内のそれらのリソースにア

このように、画像全体をデータベースに保持する必要はなく、フォルダに格納されている画像へのパスのみを格納する必要があります。 画像を保存することは、画像が常に同じフォルダにある場合、つまり各画像が常に同じ一意のパスを持つ場合に適しています。 しかし、場合によっては、画像があるフォルダから別のフォルダに転送されることがあります。 その場合、最善の解決策は、イメージファイルへの動的パスを作成することです。

以下に示すように、既存のテーブルを更新して画像パスフィールドを追加できます。

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

別の方法は、イメージ用に別のテーブルを作成し、イメージテーブルを使用してテーブルに参照を追加することです。 このようにして、複数のテーブルが単一のテーブルに画像を格納できます。 以下の表を使用して画像を保存することができます。

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

上記の表では、名前は保存されている画像の実際の名前であり、タイトルは画像をアップロードするユーザーからの入力を取得するためにオプションです。 また、type列は、イメージがローカルに保存されるのかCDNに保存されるのかを決定することができます。 ローカルに保存されている場合は、列ディレクトリを使用して、画像が保存されているパスを指定できます。 CDNの場合、列URLを使用して画像のベースパスを取得できます。 タイプ、ディレクトリ、およびURL以外に、small、medium、largeを使用して、同じ画像を複数のサイズで保存することもできます。

画像を使用する必要がある場合は、指定されたパスを使用してディスクから取得します。 このアプローチの利点は、画像を必ずしもディスクに保存する必要がないことです; 画像パスの代わりにURLを保持し、インターネットにアクセスできる任意の場所から画像を取得できます。

イメージをMySQLテーブルに保存する

イメージをMySQLデータベースに保存する別の方法は、それをテーブル自体に保存することです。 画像のサイズは非常に大きく、時には1または2MBよりも大きくなることがあります。 そのため、イメージをデータベースに保存すると、別のホスト上にある場合は、データベースとデータベースとwebサーバー間のネットワークに追加の負荷がかかります。

このアプローチでは、画像ファイルの管理が困難になる可能性があります。 他の操作を実行する前に、まずデータベースから復元する必要があります。

データベース全体がRAMに格納されているいくつかの例外があります。 MySQLデータベースは、ディスクに順次格納されます。 これは、データベースの画像ファイルがblobに変換され、データベースに埋め込まれ、ディスク上に保持されることを意味します。 最初のアプローチで述べたように、単にディスクに保存するだけで、多くの問題を回避できます。

今度は、イメージをデータベースに格納するためのテーブルイメージを作成します。 表示目的で画像の名前を保存するために、各画像とキャプションを識別するためにidを使用しました。 Picture列は、データ型を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;

概要

このチュートリアルでは、MySQLデータベースを使用してイメージを保存するオプションを提供しました。 他のデータベースでも同じ方法を使用できます。

コメントを残す

メールアドレスが公開されることはありません。