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如何判断数据为空?