<?php?
/**
?*?構(gòu)建上傳文件信息
?*?@return?unknown
?*/
function?getFiles(){
???$i=0;
???foreach($_FILES?as?$file){
??????if(is_string($file['name'])){
?????????$files[$i]=$file;
?????????$i++;
??????}elseif(is_array($file['name'])){
?????????foreach($file['name']?as?$key=>$val){
????????????$files[$i]['name']=$file['name'][$key];
????????????$files[$i]['type']=$file['type'][$key];
????????????$files[$i]['tmp_name']=$file['tmp_name'][$key];
????????????$files[$i]['error']=$file['error'][$key];
????????????$files[$i]['size']=$file['size'][$key];
????????????$i++;
?????????}
??????}
???}
???return?$files;
???
}
/**
?*?針對于單文件、多個單文件、多文件的上傳
?*?@param?array?$fileInfo
?*?@param?string?$path
?*?@param?string?$flag
?*?@param?number?$maxSize
?*?@param?array?$allowExt
?*?@return?string
?*/
function?uploadFile($fileInfo,$path='./uploads',$flag=true,$maxSize=1048576,$allowExt=array('jpeg','jpg','png','gif')){
???//$flag=true;
???//$allowExt=array('jpeg','jpg','gif','png');
???//$maxSize=1048576;//1M
???//判斷錯誤號
???if($fileInfo['error']===UPLOAD_ERR_OK){
??????//檢測上傳得到小
??????if($fileInfo['size']>$maxSize){
?????????$res['mes']=$fileInfo['name'].'上傳文件過大';
??????}
??????$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;
??????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']?=?'上傳文件超過了PHP配置文件中upload_max_filesize選項的值';
????????????break;
?????????case?2?:
????????????$res['mes']?=?'超過了表單MAX_FILE_SIZE限制的大小';
????????????break;
?????????case?3?:
????????????$res['mes']?=?'文件部分被上傳';
????????????break;
?????????case?4?:
????????????$res['mes']?=?'沒有選擇上傳文件';
????????????break;
?????????case?6?:
????????????$res['mes']?=?'沒有找到臨時目錄';
????????????break;
?????????case?7?:
?????????case?8?:
????????????$res['mes']?=?'系統(tǒng)錯誤';
????????????break;
??????}
??????return?$res;
???}
}
2019-09-05
改成?
if (!empty($res)) return $res;
就不報錯了,你試試
因為手冊寫到了empty不報錯,
而上面的代碼等同于if(!is_null($res)) return $res;
所以報錯不影響上傳成功