试试看,下面的代码,我自己写的,未经测试<?
$link=@mysql_connect("localhost","yrname","yrpass");
//连接,用你的具体连接名替换yrname,具体连接密码替换yrpass
if($link==false)
{
print "<br><br><br>";
print "<p><b>连接数据库时发生错误,请稍后再试!</b></p>";
exit();
}
$qu="use yrbase";
// 用你的具体数据库代替yrbase
$res=@mysql_query($qu,$link);
if($res==false)
{
print "<br><br><br>";
print "<p><b>打开数据库时发生错误,请稍后再试!</b></p>";
exit();
} $tmpset=0;
// 存放成功加入的图片数目 for($i=1;$i<=4;$i++)
{
// picfile[i]存放所提交的图片信息(文件路径)
// none表示用户没有在这个文件上传框中选择文件
if(trim($picfile[$i])!="none")
{
//读取数据
$fp=fopen($picfile[$i],"r");
$picdata=fread($fp,filesize($picfile[$i]));
fclose($fp);
//加上必要的标志符号
$picdata=addslashes($picdata);
//用具体的数据表名代替yrpict
//pictext[i]存放所提交的图片的文字说明
$qu="insert into yrpict(picid,picdata,pictext) values(null,'$picdata','$pictext[$i]')";
$res=@mysql_query($qu,$link);
if($res==false)
{
print "<br><br>";
print "<p><b>图片 ";
echo $i;
print " 提交失败!</b></P>";
continue;
} $tmpset=$tmpset+1;
} } print "<br><br>";
print "<p><b>操作成功!</b></p>";
print "<p><b>实际入库图片数 ";
echo $tmpset;
print " </b></P>";
exit(); }?>
$link=@mysql_connect("localhost","yrname","yrpass");
//连接,用你的具体连接名替换yrname,具体连接密码替换yrpass
if($link==false)
{
print "<br><br><br>";
print "<p><b>连接数据库时发生错误,请稍后再试!</b></p>";
exit();
}
$qu="use yrbase";
// 用你的具体数据库代替yrbase
$res=@mysql_query($qu,$link);
if($res==false)
{
print "<br><br><br>";
print "<p><b>打开数据库时发生错误,请稍后再试!</b></p>";
exit();
} $tmpset=0;
// 存放成功加入的图片数目 for($i=1;$i<=4;$i++)
{
// picfile[i]存放所提交的图片信息(文件路径)
// none表示用户没有在这个文件上传框中选择文件
if(trim($picfile[$i])!="none")
{
//读取数据
$fp=fopen($picfile[$i],"r");
$picdata=fread($fp,filesize($picfile[$i]));
fclose($fp);
//加上必要的标志符号
$picdata=addslashes($picdata);
//用具体的数据表名代替yrpict
//pictext[i]存放所提交的图片的文字说明
$qu="insert into yrpict(picid,picdata,pictext) values(null,'$picdata','$pictext[$i]')";
$res=@mysql_query($qu,$link);
if($res==false)
{
print "<br><br>";
print "<p><b>图片 ";
echo $i;
print " 提交失败!</b></P>";
continue;
} $tmpset=$tmpset+1;
} } print "<br><br>";
print "<p><b>操作成功!</b></p>";
print "<p><b>实际入库图片数 ";
echo $tmpset;
print " </b></P>";
exit(); }?>
TO天牙:我的服务器不准备开通FTP服务,所以准备放图片数据入库
TO丢丢:你的程序应该是对的,我会试试的谢了。
TO狂沙:有点误会丢丢的程序了,他的程序的确是放图片数据入库的。代码段:
读取数据
$fp=fopen($picfile[$i],"r");
$picdata=fread($fp,filesize($picfile[$i]));
fclose($fp);
不过还是谢谢你的参与 :)
我是在表单的file框里提交的图片文件,用上述代码上传到数据库(MYSQL,图片数据字段类型是blob)之后,好象变成了乱码,这是怎么回事呢?是否我在表单页写错了什么?
另外,上传文件时,我没有使用任何第三方的控件,而是直接用HTML的。
请大家查查原因。
其实这是正常现象,图片存入数据库中,相对于blob类型来说,数据存放形式就是二进制数据,所以你就以为是图片变成了乱码。你可以试试以下的方法:
(1)查看表单页面是否加入了以下enctype关键字:
<form name="formname" method="post" action="pictintodb.php"
enctype="multipart/form-data">
(2)如果已经加入了关键字,那就编写一个程序select出图片数据字段值,再在HTML的image src标记中echo一下,即可显示出存放的图片了。
试试MEDIUMBLOB或LONGBLOB
又编写了一个程序来显示select出图片数据,
但是还是没有图片,而且系统也没报任何出错信息。怎么会变成这样呢!!我的代码如下详细:天呢!!
不知不觉间,都这么晚了,请各位高手赐教菜妹小七。万分的谢谢!!
<?
print"<img src=\"showpict.php?picid=$pictid\" width=\"236\" height=\"154\">";
?>后台的showpict.php大致如下:
<?
$link=@mysql_connect("localhost","XXX","XXX"); $qu="use YYY";
$res=@mysql_query($qu,$link);
$qu="select picid,picdata from npict where picid=$picid";
$res=@mysql_query($qu,$link); $num=mysql_num_rows($res);
if($num==0)
{
print "<br><br><br>";
print "<p><b>没有这张图片!</b></p>";
exit();
}$row=@mysql_fetch_row($res);
header("Content-type:image/");echo $row[1];exit();
?>
(1)请注意书写,其中Content-type的首字母C要大写,中间是连字符,不是下划
线,并且其左右两边没有空格。
(2)看看是否是中文字符惹的祸,即引号、冒号、分号等必须是英文输入法的
输入字符,中文输入法的符号会让编译通不过。
(3)Content-type:image/的写法是可以不加图片后缀的,系统会自动处理其内
部认识的多种常见的图片类型。如果加上了也没有错,只是不太方便灵活
了,可能让系统只会处理一种图片类型。
我在MYSQL中设置图片数据字段的类型是longblob
设置类型为blob可也是可行的,但可能存放不了大图片数据。
因此我建议你更改数据类型为longblob