php 文件原生上传函数
//文件上传函数
/*
*文件上传函数
*@param array $upfile 被上传的文件信息 例如:$_FILES['myfile'];
*@param string $path 文件上传路径
*@param array $typelist 允许文件上传的类型 默认空数组 表示不限
*@param int $maxsize 允许上传的大小限制 默认0 表示不限
*@return array 返回两个关联数组
其中下标为error的值如果为true表示上传成功,false 表示失败
info下标 表示错误信息或者是文件名
*/
function fileUpload($upfile,$path,$typelist=array(),$maxsize=0){
//初始化信息
$path=rtrim($path,"/")."/";
//定义一个返回结果
$res=['error'=>false,'info'=>''];
//2.判断文件上传错误号
if($upfile['error']>0){
switch($upfile['error']){
case 1:$error="上传的文件超过了 php.ini 中限制大小"; break;
case 2:$error="上传文件的大小超过了 HTML 表单中限制的大小"; break;
case 3:$error="文件只有部分被上传。"; break;
case 4:$error="没有文件被上传。 "; break;
case 6:$error="找不到临时文件夹。"; break;
case 7:$error="文件写入失败"; break;
default:$error="未知错误";
}
$res['info']=$error;
return $res;
}
//3.判断过滤文件的类型
if(count($typelist)>0){//你是否限制
//判断类型是否是typelist中的类型
if(!in_array($upfile['type'],$typelist)){
$res['info']="文件类型不符";
return $res;
}
}
//4.文件上传大小是否满足
//上传文件大小 限制大小
if($maxsize>0 && $upfile['size']>$maxsize){
$res['info']="文件上传失败,原因:文件大小超出范围!";
return $res;
}
//5.随机文件名
$hz=pathinfo($upfile['name'],PATHINFO_EXTENSION);
//var_dump($hz);
do{
$newfile=date("YmdHis").rand(1000,9999).".".$hz;
}while(file_exists($path.$newfile));//判断文件是否存在
//echo $newfile;
//6.判断并执行上传
if(is_uploaded_file($upfile['tmp_name'])){
if(move_uploaded_file($upfile['tmp_name'],$path.$newfile)){
$res['info']=$newfile;
$res['error']=true;
}else{
$res['info']="文件上传错误!原因是:文件移动失败";
}
}else{
$res['info']="不是有效的上传文件";
}
return $res;
}
//文件上传函数
/*
*文件上传函数
*@param array $upfile 被上传的文件信息 例如:$_FILES['myfile'];
*@param string $path 文件上传路径
*@param array $typelist 允许文件上传的类型 默认空数组 表示不限
*@param int $maxsize 允许上传的大小限制 默认0 表示不限
*@return array 返回两个关联数组
其中下标为error的值如果为true表示上传成功,false 表示失败
info下标 表示错误信息或者是文件名
*/
function fileUpload($upfile,$path,$typelist=array(),$maxsize=0){
//初始化信息
$path=rtrim($path,"/")."/";
//定义一个返回结果
$res=['error'=>false,'info'=>''];
//2.判断文件上传错误号
if($upfile['error']>0){
switch($upfile['error']){
case 1:$error="上传的文件超过了 php.ini 中限制大小"; break;
case 2:$error="上传文件的大小超过了 HTML 表单中限制的大小"; break;
case 3:$error="文件只有部分被上传。"; break;
case 4:$error="没有文件被上传。 "; break;
case 6:$error="找不到临时文件夹。"; break;
case 7:$error="文件写入失败"; break;
default:$error="未知错误";
}
$res['info']=$error;
return $res;
}
//3.判断过滤文件的类型
if(count($typelist)>0){//你是否限制
//判断类型是否是typelist中的类型
if(!in_array($upfile['type'],$typelist)){
$res['info']="文件类型不符";
return $res;
}
}
//4.文件上传大小是否满足
//上传文件大小 限制大小
if($maxsize>0 && $upfile['size']>$maxsize){
$res['info']="文件上传失败,原因:文件大小超出范围!";
return $res;
}
//5.随机文件名
$hz=pathinfo($upfile['name'],PATHINFO_EXTENSION);
//var_dump($hz);
do{
$newfile=date("YmdHis").rand(1000,9999).".".$hz;
}while(file_exists($path.$newfile));//判断文件是否存在
//echo $newfile;
//6.判断并执行上传
if(is_uploaded_file($upfile['tmp_name'])){
if(move_uploaded_file($upfile['tmp_name'],$path.$newfile)){
$res['info']=$newfile;
$res['error']=true;
}else{
$res['info']="文件上传错误!原因是:文件移动失败";
}
}else{
$res['info']="不是有效的上传文件";
}
return $res;
}