php大牛们,我做的多文件上传封装函数不知道哪里出问题,帮忙看下什么原因。
functionuploadFile($fileInfo,$paht='./uploads',$flag=true,$maxSize=2049152,$allowExt=...
function uploadFile($fileInfo,$paht='./uploads',$flag=true,$maxSize = 2049152,$allowExt = array('jpg','png','jpeg','gif')){
//判断错误号
if($fileInfo['error']===UPLOAD_ERR_OK){
//$flag = true;
//$allowExt = array('jpg','png','jpeg','gif');
//$maxSize = 2049152;
//检测上传文件的大小
if($fileInfo['size']>$maxSize){
$res['mes'] = $fileInfo['name'].'文件上传过大';
}
//检测上传文件类型
//$ext = pathinfo($fileInfo['name'],PATHINFO_EXTENSION);
$ext = getExt($fileInfo['name']);
if(!in_array($ext,$allowExt)){
$res['mes'] = $fileInfo['name'].'非法文件类型';
}
//检测是否是真实图片类型
if($flag){
if(!getimagesize($fileInfo['tmp_name'])){
$res['mes'] = $fileInfo['name'].'图片不是真实的图片';
}
}
//检测是否是通过http post上传的
if(!is_uploaded_file($fileInfo['tmp_name'])){
$res['mes'] = $fileInfo['name'].'图片不是通过http,post方式上传的';
}
if($res) return $res;
$path = './uploads';
if(!file_exists($path)){
mkdir($path,0777,true);
chmod($path,0777);
}
$uniName=getUniName(); //调用封装好的函数,即唯一的文件名
$destination = $path.'/'.$uniName.'/'.$ext;
//移动临时文件(tmp_name)到制定的目录
if(!move_uploaded_file($fileInfo['tmp_name'],$destination)){
$res['mes'] = $fileInfo['name'].'文件移动失败';
}
$res['mes'] = $fileInfo['name'].'文件上传成功';
$res['dest'] = $destination;
return $res;
}else{
switch($fileInfo['error']){
//匹配错误信息
case 1:
$res['mes']= '上传文件超过了配置文件中upload_max_fileseix选项的值';
break;
case 2:
$res['mes']= '超过了表单MAX_FILE_SIZE限制的大小';
case 3:
$res['mes']= '文件部分被上传';
case 4:
$res['mes']= '没有上传文件';
case 5:
$res['mes']= '临时文件目录不存在';
break;
case 7:
case 8:
$res['mes']= '系统错误';
break;
}
return $res;
}
}
总共用三个文件
commo..func.php封装的是图片后缀名
<?php
//得到文件后缀名(扩展名)
function getExt($filename){
return strtolower(pathinfo($filename,PATHINFO_EXTENSION));
}
//产生唯一字符串,当做唯一图片吗
function getUniName($filename){
return md5(uniqid(microtime(true),true));
}
?> 展开
//判断错误号
if($fileInfo['error']===UPLOAD_ERR_OK){
//$flag = true;
//$allowExt = array('jpg','png','jpeg','gif');
//$maxSize = 2049152;
//检测上传文件的大小
if($fileInfo['size']>$maxSize){
$res['mes'] = $fileInfo['name'].'文件上传过大';
}
//检测上传文件类型
//$ext = pathinfo($fileInfo['name'],PATHINFO_EXTENSION);
$ext = getExt($fileInfo['name']);
if(!in_array($ext,$allowExt)){
$res['mes'] = $fileInfo['name'].'非法文件类型';
}
//检测是否是真实图片类型
if($flag){
if(!getimagesize($fileInfo['tmp_name'])){
$res['mes'] = $fileInfo['name'].'图片不是真实的图片';
}
}
//检测是否是通过http post上传的
if(!is_uploaded_file($fileInfo['tmp_name'])){
$res['mes'] = $fileInfo['name'].'图片不是通过http,post方式上传的';
}
if($res) return $res;
$path = './uploads';
if(!file_exists($path)){
mkdir($path,0777,true);
chmod($path,0777);
}
$uniName=getUniName(); //调用封装好的函数,即唯一的文件名
$destination = $path.'/'.$uniName.'/'.$ext;
//移动临时文件(tmp_name)到制定的目录
if(!move_uploaded_file($fileInfo['tmp_name'],$destination)){
$res['mes'] = $fileInfo['name'].'文件移动失败';
}
$res['mes'] = $fileInfo['name'].'文件上传成功';
$res['dest'] = $destination;
return $res;
}else{
switch($fileInfo['error']){
//匹配错误信息
case 1:
$res['mes']= '上传文件超过了配置文件中upload_max_fileseix选项的值';
break;
case 2:
$res['mes']= '超过了表单MAX_FILE_SIZE限制的大小';
case 3:
$res['mes']= '文件部分被上传';
case 4:
$res['mes']= '没有上传文件';
case 5:
$res['mes']= '临时文件目录不存在';
break;
case 7:
case 8:
$res['mes']= '系统错误';
break;
}
return $res;
}
}
总共用三个文件
commo..func.php封装的是图片后缀名
<?php
//得到文件后缀名(扩展名)
function getExt($filename){
return strtolower(pathinfo($filename,PATHINFO_EXTENSION));
}
//产生唯一字符串,当做唯一图片吗
function getUniName($filename){
return md5(uniqid(microtime(true),true));
}
?> 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询