显示结果是这样,Warning: fread(): supplied argument is not a valid stream resource in C:\wamp\www\pic\put_pic.php on line 8
下面是我的代码
<?php
$conn=@mysql_connect("localhost","root");
mysql_select_db('4',$conn)or die("连接数据库失败");
$info=nl2br($info);
if($pic!="none")
{
 $fp=fopen($pic,"r");
 $data=addslashes(fread($fp,filesize($pic)));
}
$filesize=filesize($pic);
$filetype=filetype($pic);
$filename=basename($pic);
$date=date("Y-m-d H:i:s");
$query="insert into photo(info,name,time,pic,filename,filesize,filetype) values('$info','$name','$date','$data','$filename','$filesize','$filetype')";
if(mysql_query($query))
{
  header("Location.href='photo.php'");
}
?>

解决方案 »

  1.   

    嗯,是我写的,我的意思是说我可以在哪里定义$pic呢?
    在这里定义么
    $info=nl2br($info);
    $pic=$_POST['pic'];
    if($pic!="none")
    {
     $fp=fopen($pic,"r");
     $data=addslashes(fread($fp,filesize($pic)));
    }
    但效果还是一样
      

  2.   

    啊?post一个路径的字串过来?啥意思?
      

  3.   

    很明显的一个问题,$pic从哪儿来的?从开始到最后$pic都没有被定义,结果fopen的时候就是一个空的资源
      

  4.   

    $pic在哪里定义的呢?没定义怎么能传进参数呢?
    比如$pic = $_POST['传入的值'];
      

  5.   

    一般是参数给错了,这里有篇解决此问题的帖子,跟你的情况差不多!
    http://www.bacysoft.cn/thread-7-1-1.html
      

  6.   


    首先分析错误,这是说明在fread()函数中没有给出一个正确的流资源文件,也就说明你的fopen打开的你自己定义的$pic,不是一个文本文件。所以$pic不管怎么传都应该是打开的文本文件的名称。
    如$fp=fopen(‘a.txt’,‘rb’),想办法把¥pic定义成文本文件名吧。post传的也得是带路径的文本文件名