PHP實現多檔案上傳的方法_php技巧

來源:互聯網
上載者:User

本文執行個體講述了PHP實現多檔案上傳的方法。分享給大家供大家參考。具體實現方法如下:

<?phpdefine('ROOT','D:/Program Files/www/test/');class Files_Tool{ protected static $allowExt=array('.jpg','.jpeg','.png','.gif','.bmp','.svg','.chm','.pdf','.zip','.rar','.tar','.gz','.bzip2','.ppt','.doc'); public static $wrong=array(); public static $path=array(); protected static $error=array(  0=>'檔案上傳失敗,沒有錯誤發生,檔案上傳成功',  1=>'檔案上傳失敗,上傳的檔案超過了 php.ini中upload_max_filesize 選項限制的值',  2=>'檔案上傳失敗,上傳檔案的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值',  3=>'檔案上傳失敗,檔案只有部分被上傳',  4=>'檔案上傳失敗,沒有檔案被上傳',  5=>'檔案上傳失敗,未允許的尾碼',  6=>'檔案上傳失敗,找不到臨時檔案夾.PHP 4.3.10 和 PHP 5.0.3 引進',  7=>'檔案上傳失敗,檔案寫入失敗.PHP 5.1.0 引進',  8=>'檔案上傳失敗,未接收到表單域的NAME',  9=>'檔案上傳失敗,,錯誤未知' );  public static function upload($name){   //檢測是否接收到表單域的NAME   if(!isset($_FILES[$name])){    self::$wrong[]=8;    return false;   }   //3維數組簡化成2維數組   $files=array_shift($_FILES);   //擷取尾碼   $files=self::get_Ext($files);   //處理檔案次數   $n=count($files['name']);   for($i=0;$i<$n;$i++){    //查看當前檔案是否有錯誤資訊,有則跳過當前檔案,處理下個檔案    if($files['error'][$i]!=0){            self::$wrong[$i+1]=$files['error'][$i];    continue;    }    //查看當前檔案的尾碼,是否允許,如果不允許,跳過當前檔案    if(!in_array($files['name'][$i],self::$allowExt)){     self::$wrong[$i+1]=5;     continue;    }    //路徑    $dir=self::time_Dir();    //檔案名稱    $name=self::rand_Name();    //尾碼    $ext=$files['name'][$i];    //檔案位置    $path=$dir.$name.$ext;    //移動臨時檔案,如果失敗,跳過當前檔案    if(!move_uploaded_file($files['tmp_name'][$i],$path)){    self::$wrong[$i]=9;    continue;    }    //存入路徑    self::$path[$i+1]=strtr($path,array(ROOT=>''));   }   return self::$path;  }  //擷取尾碼的方法  protected static function get_Ext($arr){    if(!is_array($arr) || !isset($arr['name'])){return false;}    foreach($arr['name'] as $k=>$v){    $arr['name'][$k]=strtolower(strrchr($v,'.'));    }    return $arr;  }  //以日期產生路徑  protected static function time_Dir(){   $dir=ROOT.'Data/images/'.date('Y/m/d/',time());   if(!is_dir($dir)){    mkdir($dir,0777,true);   }   return $dir;  }  //產生隨機檔案名稱  protected static function rand_Name(){   $str=str_shuffle('1234567890qwertyuiopasdfghjklzxcvbnm');   $str=substr($str,0,6);   return $str;  }  //錯誤介面  public static function errors(){   foreach(self::$wrong as $k=>$v){    self::$wrong[$k]='第'.$k.'個'.self::$error[$k];  }  return self::$wrong;  }}

希望本文所述對大家的php程式設計有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.