圖片能上傳成功,但是if($res) return $res;這行一直在報錯,請問是為什么?。?/h1>
<?php?
/**
?*?構建上傳文件信息
?*?@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']?=?'系統錯誤';
????????????break;
??????}
??????return?$res;
???}
}
<?php? /** ?*?構建上傳文件信息 ?*?@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']?=?'系統錯誤'; ????????????break; ??????} ??????return?$res; ???} }
2019-09-05
改成?
if (!empty($res)) return $res;
就不報錯了,你試試
因為手冊寫到了empty不報錯,
而上面的代碼等同于if(!is_null($res)) return $res;
所以報錯不影響上傳成功