在数据库中存储图像数据,需要将存储字段设为二进制数据。下面介绍本实例中主要应用的函数。
以二进制形式上传图片到数据库主要应用了3个函数。
1、fopen函数。
fopen()函数用于打开文件或者URL。语法如下:
int fopen(string filename, string mode);
字符串参数mode可以是下列的情形:
“r”开文件方式为只读,文件指针指到开始处。
“r+”开文件方式为可读写,文件指针指到开始处。
“w”开文件方式为写入,文件指针指到开始处,并将原文件的长度设为0。若文件不存在,则建立新文件。
“w+”开文件方式为可读写,文件指针指到开始处,并将原文件的长度设为0。若文件不存在,则建立新文件。
“a”开文件方式为写入,文件指针指到文件最后。若文件不存在,则建立新文件。
“a+”开文件方式为可读写,文件指针指到文件最后。若文件不存在,则建立新文件。
“b”若操作系统的文字及二进位文件不同,则可以用此参数,UNIX系统不需要使用本参数。
2、addslashes函数。
Addslashes函数用于将字符串加入斜线。语法如下:
string addslashes(string str);
该函数使需要让数据库处理的字符串,引号的部份加上斜线,以供数据库查询(query)能顺利运作。这些会被改的字符包括单引号(’)、双引号(”)、反斜线backslash()以及空字符NULL(the null byte)。
3、fread函数。
fread函数用于读到指定长度的位组或到文件尾EOF。语法如下:
string fread(int fp, int length);
应用二进制方法将图片上传到数据库,关键代码如下:
<?php
if($sc<>””){
$tpmc=htmlspecialchars($tpmc); //将图片名称中的特殊字符转换成HTML格式
$tpmc=str_replace(“n”,”<br>”,$tpmc); //将图片名称中的回车符以自动换行符取代
$tpmc=str_replace(“”,” ”,$tpmc); //将图片名称中的空格以” ”取代
$scsj=date(“y;m;d”); //设置图片的上传时间
$fp=fopen($file,”r”); //以只读方式打开文件
$file=addslashes(fread($fp,filesize($file))); //将文件中的引号部分加上反斜线
$query=”insert into tb_tpsc (tpmc,file,scsj) values (‘$tpmc’,’$file’,’$scsj’)”; //创建插入图片数据的sql语句
$result=mysql_query($query);
echo “<meta http-equiv=”refresh” content=”1;url=index.php”>图片上传成功,请稍等…”;
}
?>
评论