初级php:经过简单验证完成多文件上传的处理

<?php
    /*
        类名: uploads
        描述:    经过简单验证完成多文件上传的处理
        作者:    文名天下
                http://weibo.com/wenmingtianxia
    */
    class uploads{
        
        /*
            方法:    move()        经过方法中其他函数的检测上传一段文件
            参数:    $fName        input 值 一般为 f[] 等
                    $max            文件允许的最大字节数默认1024000
                    $list            数组, 允许的后缀名列表
            返回:    array            [0]    0为上传成功,1-9为错误号;
                                    [1]    返回文件urls[]数组,或者错误说明;
        */
        public function move($fName,$max=1024000,$listArr=array('jpg','gif','jpeg','png')){                        
            #检测是否符合条件
            $check=$this->checkSuffix($fName,$listArr);
            if($check[0]!='0') return $check;
            $check=$this->checkSize($fName,$max);
            if($check[0]!='0') return $check;
            $check=$this->checkError($fName);
            if($check[0]!='0') return $check;
            
            #上传
            $i=0;
            $tmp=$_FILES[$fName]['tmp_name'];
            $name=$_FILES[$fName]['name'];
            foreach($tmp as $value){
                    $topath='attachments/'.date('Y').'/'.date('m').'/'.date('d');
                    if(!is_dir($topath)) mkdir($topath,0777,true);
                    $to[$i]=$topath.'/'.uniqid().$name[$i];
                    move_uploaded_file($tmp[$i],$to[$i]);
                    $i++;
            }
            return array('0',$to);
        }#move()

        
        /*
            方法:    checkError()    检查一组文件的上传过程是否有错误
            参数:    $fName            传入表单的input 值 一般为 f[] 等
            返回:    array                [0]反馈是否通过, 0 为通过;
                                        [1]返回详细说明;
        */
        private function checkError($fName){
            foreach($_FILES[$fName]['error'] as $value){
                switch ($value) {
                        case 1:
                            return array('1','文件大小超过php.ini中指定的大小');
                        case 2:
                            return array('2','文件大小超过MAX_FILE_SIZE的大小');
                        case 3:
                            return array('3','文件只有部分被上传');
                        case 4:
                            return array('4','没有文件被上传');
                        case 6:
                            return array('6','没有找到缓存文件');
                        case 7:
                            return array('7','文件写入失败');
                }            
            }    
            return array('0','pass');
        }#upError()
        
        /*
            方法:    checkSuffix()    检查上传文件的文件名是否符合要求;
            参数:    $fName            表单input file 的name 值 一般为 f[] 等;
                    $list                数组, 允许的后缀名列表;
            返回:    array                [0]反馈是否通过, 0 为通过;
                                        [1]返回详细说明;
        */
        private function checkSuffix($fName,$list=array('jpg','gif','jpeg','png')){
            foreach($_FILES[$fName]['name'] as $value){
                $arr=explode('.',$value);
                $suffix=array_pop($arr);
                if (!in_array($suffix,$list)){
                    if($suffix=='') return array('8','文件未找到,请重新提交');
                    return array('8',$suffix.'文件暂时无法上传');
                }
            }
            return array('0','pass');
        }#upSuffix()

        /*
            方法:    checkSize()        检查文件的上传大小是否符合要求;
            参数:    $fName            表单中 input file name 的值 一般为 f[] 等;
                    $max                期望控制文件的最大值,默认为1M
            返回:    array                [0]反馈是否通过, 0 为通过;
                                        [1]返回详细说明;            
        */
        private function checkSize($fName,$max=1024000){
            foreach($_FILES[$fName]['size'] as $value){
                if($value>$max){
                        return array('0','文件超过'.$max.'字节');
                }
            }
            return array('0','pass');    
        }#checkSize()
        
    }//class upload
?>    








作者: 陈文_32   发布时间: 2011-08-03

诶~~ 简直不敢相信这是自己敲出来的, 一个月的学习啊~~

作者: 陈文_32   发布时间: 2011-08-03