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

1,判断文件是否为空 empty($_FILES[表单名][name])

2,判断文件上传是否成功 $_FILES[表单名][error]

3,判断文件上传类型$_FILES[表单名][type]

4,判断文件是不是上传文件,is_uploaded_file

5,移动上传的文件,move_uploaded_file

6,如果写成方法,需要返回文件路径


多文件上传

1,过滤空值array_filter()

2,循环上传

/**
 * 文件上传处理函数
 * @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;
}

文件上传方法

$arr=uploadFile($_FILES['file'],'./upload');
var_dump($arr);

上传方法调用

调用成功后,会在upload文件夹下创建以年月日为目录名的文件夹,并将文件进行上传

转载于:https://my.oschina.net/u/943666/blog/644778

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值