複数ファイルのアップロード - PHP
- define('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=>'ファイルのアップロードに失敗しました。一時フォルダーが見つかりません',
- 7=>' ファイルのアップロードに失敗しました、ファイルの書き込みに失敗しました',
- 8=>'ファイルのアップロードに失敗しました、フォームフィールドの名前を受信できませんでした',
- 9=>'ファイルアップロードに失敗しました、,エラーは不明です'
- );
-
- public static function Upload($name){
- //フォームフィールドのNAMEを受信したか確認します
- if(!isset($_FILES[$name])){
- self::$wrong[]=8;
- return false;
- }
- // 3D 配列は 2D 配列に簡略化されます
- $files=array_shift($_FILES);
- // サフィックスを取得します
- $files=self::get_Ext ($files);
- //ファイルの処理回数
- $n=count($files['name']);
- for($i=0;$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;
- }
- //Path
- $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]=strto lower(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 functionerrors(){
- foreach (self::$wrong as $k=>$v){
- self: :$wrong[$k]='th'.$k.'th'.self::$error[$k];
- }
- return self::$wrong;
- }
-
- }
コードをコピー
|