mysql中储存二进制图片流
mysql是可以储存二进制流文件的,当然处于性能的考虑,一般很少这样操作,下面是个例子,
看php如何读取数据库中的二进制流并转化为图片显示。
数据库test中创建表clothes_info,sql如下:
DROP TABLE IF EXISTS `clothes_info`;
CREATE TABLE `clothes_info` (
`id` int(10) NOT NULL auto_increment,
`clothesid` varchar(50) NOT NULL,
`clothesname` varchar(100) NOT NULL,
`produceplace` varchar(30) default NULL,
`color` varchar(30) NOT NULL,
`size` varchar(20) NOT NULL,
`price` decimal(10,2) NOT NULL,
`sale` decimal(10,2) NOT NULL,
`clothescount` int(10) default NULL,
`picture` longblob,
`type` varchar(10) default NULL,
`notes` text,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
插入数据库insert_table.php:
<?php
$con=mysql_connect(“localhost”,’root’,’123456′);
mysql_select_db(“test”);
$Picture=”1.jpg”;
$PSize = filesize($Picture);
$mysqlPicture = addslashes(fread(fopen($Picture, “r”), $PSize));
$mysqlPicture=base64_encode($mysqlPicture);
mysql_query(“SET NAMES utf8″);
mysql_query(“INSERT INTO clothes_info(clothesid,clothesname,produceplace,color,size,price,sale,clothescount,picture,type,notes) VALUES
(’9999999′,’大衣’,'上海’,'red’,’50′,’500′,’8.8′,’30′,’$mysqlPicture’,'jpg’,'ddd’)”);
?>
showpic.php:把二进制流文件写进图片文件中
<?php
$con=mysql_connect(“localhost”,’root’,’123456′);
mysql_select_db(“test”);
$sql=” SELECT * FROM `clothes_info` where clothesid=9999999″;
mysql_query(“SET NAMES utf8″);
$result=mysql_query($sql,$con);
$row=mysql_fetch_object($result);
//header(“Content-type:image/jpeg”);
$file = fopen(“111.jpg”,”wb”);//打开文件准备写入
fwrite($file,stripslashes(base64_decode($row->picture)));//写入
fclose($file);//关闭
echo “<img src=’111.jpg’>”;
?>
showpic2.php:二进制流转成图片显示
<?php
$con=mysql_connect(“localhost”,’root’,’123456′);
mysql_select_db(“test”);
$sql=” SELECT * FROM `clothes_info` where clothesid=9999999″;
mysql_query(“SET NAMES utf8″);
$result=mysql_query($sql,$con);
$row=mysql_fetch_object($result);
header(“Content-type:image/jpeg”);
echo stripslashes(base64_decode($row->picture));
?>
