文件是在客户端,php运行在服务器端。
服务器端想知道客户端的某个文件的的信息,
只有客户端提交,服务器处理后,
同时也会再服务器端产生临时文件。
同时服务器才会确定这个提交过来的文件的相关信息,诸如大小。php.ini里面的upload_file_max是限制文件上传大小的(还有几个相关的配置
你可以在本版找一下)就是说,大于这个最大值的文件,服务器php引擎无法处理
既然没法传上去这个文件,自然你的php语句也没法执行。客户端和服务器交互,总是客户端通过点击按钮或者传url参数,通过get or post方法把本地信息传到服务器,服务器的脚本引擎对传来的数据进行分析,设置好环境变量,然后脚本开始执行的吧?至于$_FILES['userfile']['size']变量也不一定是非得用来控制上传大小的吧
手册中说了确实是文件的大小,一般,如果作文件下载,我可以把这个信息入库
这样下载的时候,可以设置好相应的header吧。“
其他的在文件上传前就可以判断文件大小的方法或函数,但我却找不知道!!

这句,我还确实不知道有这样的函数。

解决方案 »

  1.   

    大于3M后无法上传
    这个$_FILES['userfile']['size']读取的是服务器端的文件的大小
      

  2.   

    <?
    if(!empty($Submit))
    {
    if($photofile_size>3000000)die("图片太大了,要上传的文件必须小于3000KB");
    $imagename = explode(".",$photofile_name);
    if((stristr($imagename[1],"jpg"))||(stristr($imagename[1],"gif")))
    {
    $stemp = date("YmjHis");
    $upload_name= "data/$stemp.$imagename[1]";
    //文件存放在 data目录下
    //文件名由上传时间确定,目的是防止重名文件被覆盖。
    copy($photofile,$upload_name);
    print "上传成功";
    exit;
    }
    die("只能上传JPG或GIF文件");
    }
    print "<form method=post enctype='multipart/form-data'>";
    print "<table width=400 border=1 cellspacing=0 cellpadding=3 bordercolorlight=#B5E1F7>";
    print "<tr><td align=center bgcolor=#B5E1F7><b><font color=#000066>上传照片</font></b></td>";
    print "<tr><td><input type=file name=photofile size=30 class=text><br>";
    print "上传的图片大小不能超过3000KB </td></tr>";
    print "<tr><td align=center><input type=submit name=Submit class=text value='上 传'></td></tr></table></form>";
    ?>
      

  3.   

    $img_size = ceil(filesize($HTTP_POST_FILES["myphoto"]["tmp_name"])/1000);
     if($img_size>3000)
    {
      header("location:error.shtml?你的图片文件过大(应小于80K),请另选");
      exit();
    }