php mysqlによる画像の保存と表示
1、データベーステーブルの作成
イメージフィールドは画像の内容、blob形式、contenttypeフィールドは画像のcontenttypeを格納します
2、画像をデータベースに保存する
注意addslashes関数で転送する必要があります.そうしないと、データベースの操作が通れません.
3、画像表示
show_image.phpコード
CREATE TABLE `photo` (
`id` int(12) NOT NULL AUTO_INCREMENT,
`image` blob NOT NULL,
`ContentType` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
イメージフィールドは画像の内容、blob形式、contenttypeフィールドは画像のcontenttypeを格納します
2、画像をデータベースに保存する
$_allowType = array('image/jpg','image/jpeg','image/pjpeg','image/png','image/gif');
if($_FILES['newmPhoto']['size'] >500000){// 500k
cpmsg('size_max');
}elseif(!in_array($_FILES['newmPhoto']['type'],$_allowType)){
cpmsg('type_error');
}
else{
$fp =fopen($_FILES['newmPhoto']['tmp_name'],'r');
$fileData = addslashes(fread($fp,filesize($_FILES['newmPhoto']['tmp_name'])));
$data = array(
'Contenttype' =>$_FILES['newmPhoto']['type'],
'image' => $fileData,
);
DB::insert('photo', $data);// insert
}
注意addslashes関数で転送する必要があります.そうしないと、データベースの操作が通れません.
3、画像表示
echo "<img src=\"show_image.php?id=".$imageId."\"/>";
show_image.phpコード
<?php
require_once 'std.inc.php';
global $_G;
$query = DB::fetch_first("SELECT image,Contenttype FROM ".DB::table('photo')." WHERE id={$_G['gp_id']}");
Header( "Content-type: ".$query['Contenttype']);
echo $query[image];
?>