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