上傳多文件
1.在對多文件信息進行操作前,需要構建文件信息,通過buildInfo函數將三維數組轉換成便于文件操作的二維數組。
function buildInfo(){  $i = 0;  foreach ($_FILES as $v){    //判斷是否是單文件    if(is_string($v['name'])){      $files[$i] = $v;      $i++;    }else{      //多文件      foreach ($v['name'] as $key => $value){        $files[$i]['name'] = $value;        $files[$i]['size'] = $v['size'][$key];        $files[$i]['tmp_name'] = $v['tmp_name'][$key];        $files[$i]['type'] = $v['type'][$key];        $files[$i]['error'] = $v['error'][$key];        $i++;      }    }  }  return $files;}單文件和多文件的判斷在于文件數組的類型,單文件(二維數組)、多文件(三維數組)。
2.文件上傳函數及參數
path,保存目錄。allowExt,允許擴展名數組。maxSize最大上傳文件大小。imgFlag,圖片文件標識符。
3.判斷保存文件的目錄是否存在
if(!file_exists($path)){    mkdir($path, 0777, true);  }4.傳入構建好的文件信息,保存到files
$i = 0;$files = buildInfo();
5.判斷文件的error類型
foreach ($files as $file){    if($file['error'] == UPLOAD_ERR_OK){}else{    switch ($file['error']){      case 1:        $mes = "超過配置文件上傳文件大小";        break;      case 2:        $mes = "超過了表單設置";        break;      case 3:        $mes = "文件部分被上傳";        break;      case 4:        $mes = "沒有文件上傳";        break;      case 6:        $mes = "沒找到臨時目錄";        break;      case 7:        $mes = "文件不可寫";        break;      case 8:        $mes = "由于PHP的擴展程序中斷了文件上傳";        break;    }6.限制文件類型
if($file['error'] == UPLOAD_ERR_OK){      $ext = getExt($file['name']);      if(!in_array($ext, $allowExt)){        exit("非法文件類型");      }7.限制是否為真的圖片類型
if($imgFlag){        if(!getimagesize($file['tmp_name'])){          exit("不是真的圖片類型");        }      }8.判斷文件大小
if($file['size'] > $maxSize){        exit("文件過大");      }9.判斷文件是否通過post上傳
if(!is_uploaded_file($file[‘tmp_name'])){ exit(“文件不是通過HTTP POST上傳”); }10.重命名文件(唯一且不重復)并保存到目標目錄
$filename = getUniName().".".$ext;$destination = $path."/".$filename;if(move_uploaded_file($file['tmp_name'], $destination)){        $mes = "文件上傳成功";        $file['name'] = $filename;        unset($file['error'], $file['tmp_name']);        $uploadedFiles[$i] = $file;        $i++;      }重寫文件信息數組中的name,刪除變量file[‘error']和file[‘tmp_name']。最后將成功上傳的文件保存到uploadedFiles數組中。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。
新聞熱點
疑難解答
圖片精選