MySQLのBLOBを使って、画像ファイルを保存・ダウンロード。
・テーブルを作成します。データベースやユーザは別途作ってください。
use cblob;
DROP TABLE IF EXISTS cblob;
CREATE TABLE cblob ( -- イメージファイルテーブル
cblob_id SERIAL , -- 固有レコード識別子
name VARCHAR(256) , -- ファイル名
file LONGBLOB , -- ファイル
PRIMARY KEY (cblob_id)
) ;
・データを入れます。
<?php
$db = new mysqli('localhost', 'cblob', '(パスワード)', 'cblob');
$db -> set_charset('utf8');
$name = "test.jpg";
$file = base64_encode(file_get_contents("test.jpg"));
$SQL = "insert into cblob (name, file) values ('{$name}', '{$file}') ";
$db -> query($SQL);
$db -> close();
?>
・ダウンロード
<?php
$db = new mysqli('localhost', 'cblob', '(パスワード)', 'cblob');
$db -> set_charset('utf8');
$SQL = "select * from cblob where cblob_id = 1 "; // cblob_id をパラメータで渡せば、画像ファイルを指定できます。
$rc = $db -> query($SQL);
if ($obj = $rc -> fetch_assoc()) {
$file = base64_decode($obj['file']);
header('Content-Type: image/jpg');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '. strlen($file));
echo $file;
}
$db -> close();
?>
MySQL BLOB