Chinaunix

标题: 用PHP向MySql中写入图片 [打印本页]

作者: LAMP-兄弟连    时间: 2008-11-24 14:47
标题: 用PHP向MySql中写入图片
我们经常遇到的问题是如何将图片文件放到Mysql数据库当中,这样可以避免没有认证的用户找到我们的图片资源!

1、看看数据库里的表结构怎么写

CREATE TABLE Images
(
    PicNum int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Image BLOB,
    Comment TEXT
)--> PicNum -- 自动增加的ID号码
--> Image -- 二进制数据,用来放图片
--> Comment -- 注释信息,比如:这张照片是我7岁照的!
2、存储一张图片的步骤


//数据库的连接参数,例子当中这些参数在mysqlconnect.php中填写$MysqlHost = '';
$MysqlUser = '';
$MysqlPass = '';
$MysqlDb ='';

$ImagePath = 'mysqlimages/1.gif';
$Comment = '哈哈哈;
$ImageSize = filesize($ImagePath);
$MysqlImage = addslashes(fread(fopen($ImagePath, 'r'), $ImageSize));
mysql_connect($MysqlHost, $MysqlUser, $MysqlPass)     or die ('Unable to connect to SQL Server');
mysql_select_db($MysqlDb)                                         or die ('Unable to connect Database');
mysql_query("INSERT INTO Images (Image,Comment) VALUES ('$MysqlImage','$Comment')")   or die ("Can't Perform Query");addslashes()函数是将那些可能发生转意的字符加上\,如` ' " 这些符号!
$MysqlImage = addslashes(fread(fopen($ImagePath, 'r'), $ImageSize));这是个联合的写法,其它的不用解释!
就这样一张图片进入了mysql数据库
作者: sunnyfun    时间: 2008-11-24 16:58
图片小,量少好说,大的话数据库会给整趴下的吧。
作者: mz198424    时间: 2008-11-24 18:37
有个方法就挺好。
作者: jerryma    时间: 2008-11-26 15:08
从可扩展性和性能考虑,不建议这么做。
作者: ysllyfe    时间: 2008-12-01 08:59
我们现在就是这样做的,但是避免未认证的用户找图片,这个不是办法,读数据库本来消耗就很大,放到数据库里面,第一次读取的时候生成对应缓存,其它还是要用web服务器等做
作者: james.liu    时间: 2008-12-24 13:32
还真没做过直接扔到数据库的。。

量大了怎么办啊?
作者: feifengxlq    时间: 2008-12-24 20:19
这个都是好老的主体了。。。

前一个项目我就是使用数据库来存储所有的图片。。图片在2M以下,结合缓存还是蛮好使用的。

最重要的是管理方便。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2