当前位置:编程学习 > php >>

php中使用fopen和fread上传二进制图片失败,请问哪里有问题?急!

以下是我传图片的主要代码。上传后数据库中有数据进来,但是图片为0字节!!!!! 我觉得是fopen和fread的参数写得不对导致数据库读不进二进制图片。 求高人解答!非常急!明天就要交了。。。就差这个了。谢谢 if($_POST["btn_tj"]=="提交"){ $tpmc=htmlspecialchars($_POST['tpmc']); //将图片名称中的特殊字符转换成HTML格式 $tpmc=str_replace("\n","<br>",$tpmc); //将图片名称中的回车符以自动换行符取代 $tpmc=str_replace(""," ",$tpmc); //将图片名称中的空格以" "取代 $author=$_SESSION['admin']; $scsj=date("y;m;d"); //设置图片的上传时间 $fp=fopen($file,"r"); //以只读方式打开文件 $file=addslashes(fread($fp,filesize($file)));//将文件中的引号部分加上反斜线 $query="insert into tb_tpsc (tpmc,file,author,scsj) values ('$tpmc','$file','$author','$scsj')"; //创建插入图片数据的sql语句 $result=mysql_query($query); echo "<meta http-equiv=\"refresh\" content=\"1;url=browse_pic.php\">图片上传成功,请稍等..."; }
补充:数据库里有一条一条的记录,并且作者、日期、图片名称等等都正确的传进了数据库,就是file(也就是图片)是0字节!5555
答案:$tpmc=str_replace(""," ",$tpmc);       //将图片名称中的空格以" "取代
$author=$_SESSION['admin'];
$scsj=date("y;m;d");          //设置图片的上传时间
$fp=fopen($file,"r"); //以只读方式打开文件
$file=addslashes(fread($fp,filesize($file)));//将文件中的引号部分加上反斜线


改为

$file=str_replace(""," ",$tpmc);       //将图片名称中的空格以" "取代
$author=$_SESSION['admin'];
$scsj=date("y;m;d");          //设置图片的上传时间
$fp=fopen($file,"r"); //以只读方式打开文件
$file=addslashes(fread($fp,filesize($file)));//将文件中的引号部分加上反斜线


$file 得有值呀,把 $file=str_replace(""," ",$tpmc);  改了试试,应该就好了
其他:好难呀 我也是,如果解决了,请告诉我一下好吗,谢谢了 

上一个:别人通过我的接口 向我发送 一个 SOAP 请求,是一段 XML 问题是 我怎么用php把XML 接收下来并做解析,
下一个:php连接mysql如何判断数据为空?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,