●Try it ! ⇒「Photo編」

酒好き甘党アングラー ”ヤン・G”が写真に目覚めた!?

●画像をデータベースに保存、ブラウザで表示する-サンプルスクリプト-

2012年01月22日 | Linux&Web style

これは嬉しい見つけもの。 感謝!

・Sample Script を見つけたのでメモっとく。

 アップロードした画像をデータベース(MySQL)に直接保存するやり方とその表示方法の簡単なメモ
 まずは、データベースの準備

・最小限のテーブル構成例
 //image_table
 id
int(11) unsigned not null auto_increment primary key,
 mime varchar
(50) not null,
 data MEDIUMBLOB
not null
 のような感じで・・

 dataが実際の画像のバイナリデータを入れる所。 BLOB型だと最大64KB、MEDIUMBLOB型だと最大16MBまでの画像が格納できる。

 mimeは画像のMIMEタイプを格納するためのフィールドで、 「フォームから受け取ったMIMEタイプを素直に信用して格納する」 という方針で準備。(実際にはisset関数などを使ってチェック→error表示か?)

・次画像アップロード用のフォームではenctype を multipart/form-data にして、受信スクリプトへのパスを action で指定しておく。
<form method='post' enctype='multipart/form-data' action='パス'>
<input type='hidden' name='MAX_FILE_SIZE' value='最大バイト数'>
<input type='file' name='imagefile'>
<input type='submit' name='upload' value='アップロード'>
form>
・受信スクリプト。フォームから受け取ったデータを簡単なチェックの後データベースに格納。
if($_FILES['imagefile']['error'])       exit;

$mime
= $_FILES['imagefile']['type'];//mime type
$path
= $_FILES['imagefile']['tmp_name'];//uploaded file

if($mime=='image/pjpeg')        $mime='image/jpeg';
if($mime=='image/x-png')        $mime='image/png';

if(is_uploaded_file($path))
{
$mime
= addslashes($mime);
$data
= addslashes(file_get_contents($path));//一時ファイルの読み込み

$sql
= "insert into image_table (mime,data) values ('$mime','$data')";
$db
->query($sql);//略記
}
 アップロードされた一時ファイルを直接 file_get_contents で読み込んでるが、サーバーによっては、move_upload_file でファイルを移動してから file_get_contents で読み込む必要あり。

・保存したファイルをidを指定して表示してみる。
//image.php
$id
= intval($_GET['id']);
$sql
= "select * from image_table where id=$id";

if($image = $db->findone($sql))//1レコード取得(略記)
{
header
("Content-type: ".$image['mime']);
echo stripslashes
($image['data']);
}
・実際は、この表示スクリプトへのパスをimgタグに埋め込んで使う。
<img src='./image.php?id=1'>

最新の画像もっと見る

コメントを投稿