本帖最后由 zixisecai 于 2011-02-10 17:32:00 编辑

解决方案 »

  1.   


    文件夹不存在或者是目录错误,代码改为:
    <?
    $f=$_FILES['userfile'];
    $type_name= $f['tmp_name'];
    //print_r ($_FILES['userfile']);
    //有没有传文件判断
    if ($f['error']==4){
    echo("<script>alert('请选择你要上传的文件,谢谢!');location.href='upfile.php';</script>");
    }
    else{
    //出错判断
    if ($f['error']){
    echo "失败,文件太大了!错误代码是".$f['error'];
    exit;
    }//类型判断
    if (substr($f['type'], 0, 5) == 'image') {
                        switch ($f['type']) {
                            case 'image/jpeg':
                            case 'image/jpg':
                            case 'image/pjpeg':
                                $ext = '.jpg';
                                break;
                            case 'image/gif':
                                $ext = '.gif';
                                break;
                            case 'image/png':
                            case 'image/x-png':
                                $ext = '.png';
                                break;
                            default:
                                header('Content-type: text/html; charset=UTF-8');
                                echo("<script>alert('你传的不是图片吧?');location.href='upfile.php';< /script>");
                                die('REDIRECTING...');
                                break;
                        }
    }else {
                        header('Content-type: text/html; charset=UTF-8');
                        echo("<script>alert('你传的不是图片吧?');location.href='upfile.php';</script>");
                        die('REDIRECTING...');
                    }//生成随机数
    $randomnum=NULL;
    for($j=0;$j<=5;$j++)//随机数字的长度,本例随机数长度为6
    {
    srand((double)microtime()*1000000);
    $randomnumber=rand(!$j ? 1: 0,9);//产生随机数,不以0为第一个数,有些特殊的地方0开头被系统省略
    $randomnum.=$randomnumber;
    }$dest_dir=$_SERVER['DOCUMENT_ROOT'].'/upfile';//设定上传目录$dest=$dest_dir.'/'.time().'_'.$randomnum.$ext;//设置文件名为时间戳加上随机数避免重复if (is_uploaded_file($f['tmp_name'])) {    
            $r=move_uploaded_file($_FILES['userfile']['tmp_name'],$dest);
            if($r){
                chmod($dest, 0777);//设定上传的文件的属性
                echo "成功了,文件地址是:".$dest;
            }else{
            
            }
    }else{
        echo("<script>alert('上传失败?');location.href='upfile.php';</script>");
    }
    }
    ?>要加上$_SERVER['DOCUMENT_ROOT']前缀,表示根目录,这样才正确,另外要确保网站目录下有upfile这个文件夹,这两点都确认了就没有问题了