1,判断文件是否为空 empty($_FILES[表单名][name])php
2,判断文件上传是否成功 $_FILES[表单名][error]数组
3,判断文件上传类型$_FILES[表单名][type]函数
4,判断文件是否是上传文件,is_uploaded_filecode
5,移动上传的文件,move_uploaded_fileorm
6,若是写成方法,须要返回文件路径文件上传
多文件上传string
1,过滤空值array_filter()it
2,循环上传io
/** * 文件上传处理函数 * @param array $upfile 上传文件信息数组,如:$_FILES['pic']; * @param string $path 上传文件的存储目录路径 * @param array $typelist 容许上传的文件类型,默认为array()则表示不限制类型 * 如:array("image/jpeg","image/gif","image/png"); //定义容许的上传文件类型 * @param int $maxsize 容许上传文件的大小,默认为0表示不限制。 * @return array 返回值为两个单元的数组, * 第一个单元下标为error:true表示成功,false表示失败 * 第二个单元下标为info:上传成功表示文件名,上传失败表示失败缘由 */ function uploadFile($upfile,$path,$typelist=array(),$maxsize=0){ //1.定义一些变量: $path=$path.'/'.date('Ymd').'/'; if(!is_dir($path)){ mkdir($path,0777,true); } $path=rtrim($path,"/")."/"; //处理一下上传目录 $res=array("error"=>false,"info"=>""); //定义返回值 //2.判断上传文件错误 if($upfile['error']>0){ switch($upfile['error']){ case 1: $info="上传文件大小超过了php.ini中配置"; break; case 2: $info="上传文件大小超过form表单中MAX_FILE_SIZE的设置"; break; case 3: $info="文件只有部分被上传"; break; case 4: $info="没有文件被上传"; break; case 6: $info="找不到临时文件夹"; break; case 7: $info="文件写入失败"; break; default: $info="未知错误!"; break; } $res['info']=$info; return $res; } //3.判断上传文件类型 if(count($typelist)>0 && !in_array($upfile['type'],$typelist)){ $res['info']="上传文件类型错误!当前文件类型:".$upfile['type']; return $res; } //4.判断上传文件大小 if($maxsize>0 && $upfile['size']>$maxsize){ $res['info']="上传文件大小超出{$maxsize}"; return $res; } //5.上传文件的名称处理(防止名字重复) $ext = pathinfo($upfile['name'],PATHINFO_EXTENSION);//获取文件的后缀名 do{ $newfile = time().rand(1000,9999).".".$ext; //随机一个文件名 }while(file_exists($path.$newfile)); //判断是否存在 //6.执行文件上传。 //判断临时目录的的文件是不是有效的上传文件 if(is_uploaded_file($upfile['tmp_name'])){ // 这个就相似于copy函数 if(move_uploaded_file($upfile['tmp_name'],$path.$newfile)){ $res['error']=true; $res['info']=$newfile; }else{ $res['info']="移动上传文件错误!"; } }else{ $res['info']="不是有效的上传文件!"; } return $res; }
文件上传方法function
$arr=uploadFile($_FILES['file'],'./upload'); var_dump($arr);
上传方法调用
调用成功后,会在upload文件夹下建立以年月日为目录名的文件夹,并将文件进行上传