php图片文件上传类upload v2.3,实现单张图片和多张图片批量上传,喜欢的朋友可以按自己的需要来做些调整,比如这个php文件上传类将图片校验和上传分开写了,如果要简化的话可以给两个方法都写到一起去,也可以加个构造函数给必要参数一次性传进去,这是纯php上传文件类。

//图片上传类 v2.3
class MyFileUpload{
		
	//单个图片信息校验
	public function CheckImageFile($file,$name){
		$rearr= array('a','');//a:no  b:ok
		//图片文件类型
		$imageTypes	= array('jpeg','gif','pjpeg','png');
		//图片大小限制
		$imageSize	= 1024000;//图片大小限制1M
		//校验数组
		if(!$file[$name] || $file[$name]["error"] > 0){
			$rearr[1]='图片上传失败';
			return $rearr;
		}
		//校验文件类型
		if($file[$name]['type']==''){
			$rearr[1]='文件类型不允许';
			return $rearr;
		}
		$index = strripos($file[$name]['type'],'/')+1;
		$type = substr($file[$name]['type'],$index);
		if(!in_array($type,$imageTypes)){
			$rearr[1]='文件类型不允许';
			return $rearr;
		}
		//校验文件尺寸
		if($file[$name]['size']+3>$imageSize+3){
			$rearr[1]='图片尺寸过大,上传失败';
			return $rearr;
		}
		$rearr[0]='b';
		$rearr[1]='OK';
		return $rearr;
	}
	//执行图片上传($_FiLES,表单中的name属性,保存路径-相对首页路径)
	public function UploadImage($file,$name,$savedir='uploads'){
		$return_arr = array('a','');
		$type = $file[$name]["name"];
		$index = strripos($type,'.');
		$type = substr($type,$index);
		$newname = date('YmdH',time()).rand(10000,99999).'_'.rand(10000,99999).$type;
		$savedir = $savedir.'/image/'.date('Ym',time());
		if(!is_dir($savedir)){
			//if(mkdir(iconv("UTF-8", "GBK", $savedir),0777,true)){
			if(mkdir($savedir,0777,true)){
				//创建目录成功
			}else{
				//创建目录失败
				$return_arr[1]='创建目录失败';
				return $return_arr;
			}
		}
		$filename = $savedir.'/'.$newname;
		if(move_uploaded_file($file[$name]["tmp_name"],$filename)){
			$return_arr[0]='b';
			$return_arr[1]=$savedir.'/'.$newname;
		}else{
			//操作失败
			$return_arr[1]='操作失败';
		}
		return $return_arr;
	}
	
	
	
	//多个图片信息校验 ($_FiLES,图片在form中的name)
	public function MultiCheckImageFile($file,$name){
		$rearr= array(
			'flag'=>'0',//成功则为 1
			'info'=>'图片上传失败'
		);
		$imageTypes	= array('jpeg','jpg','gif','png','bmp');//允许类型
		$imageSize	= 1024000;//图片大小限制1M
		//空校验
		if(!$file[$name]){return $rearr;}
		$count = count($file[$name]['name']);
		for($i=0;$i<$count;$i++){
			if($file[$name]['tmp_name'][$i]==''){
				$rearr['info']='请选择图片';
				return $rearr;
			}
			//校验文件类型
			$index = strripos($file[$name]['type'][$i],'/')+1;
			$type = substr($file[$name]['type'][$i],$index);
			if(!in_array($type,$imageTypes)){
				$rearr['info']='文件类型不允许['.$file[$name]['name'][$i].']';
				return $rearr;
			}
			//校验文件尺寸
			if($file[$name]['size'][$i]+3>$imageSize+3){
				$rearr['info']='图片尺寸过大,上传失败['.$file[$name]['name'][$i].']';
				return $rearr;
			}
		}
		$rearr['flag']='1';
		$rearr['info']='校验成功';
		return $rearr;
	}
	//多个执行图片上传($_FiLES,表单中的name属性)
	public function MultiUpload($file,$name,$savedir='uploads'){
		$return_arr = $rearr= array(
			'flag'=>'0',//成功则为 1
			'data'=>array(
				//所有图片url集合
			),
			'info'=>'图片上传失败'
		);
		$count = count($file[$name]['name']);
		for($i=0;$i<$count;$i++){
			
			$type	= $file[$name]["name"][$i];
			$index	= strripos($type,'.');
			$type	= substr($type,$index);
			
			$newname = date('YmdH',time()).rand(10000,99999).'_'.rand(10000,99999).$type;
			$savedir = $savedir.'/image/'.date('Ym',time());
			if(!is_dir($savedir)){
				if(!mkdir(iconv("UTF-8", "GBK", $savedir),0777,true)){
					//创建目录失败
					$return_arr['info']='创建目录失败';
					return $return_arr;
				}
			}
			//保存图片
			if(move_uploaded_file($file[$name]["tmp_name"][$i],$savedir.'/'.$newname)){
				$return_arr['data'][]=$savedir.'/'.$newname;
			}else{
				$return_arr['info']='图片保存失败';
				return $return_arr;
			}
		}
		$return_arr['flag']='1';
		$return_arr['info']='上传成功';
		return $return_arr;
		
	}
}

$file,$savedir这些都可以再做些适当的优化,