php文件上传处理流程及多文件上传的思路

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文件夹下建立以年月日为目录名的文件夹,并将文件进行上传

相关文章
相关标签/搜索