単一ファイルと複数ファイルのアップロード コードを実際にサポートし、$_FILES[$field]['name'] 内の $_FILES[$field]['name'] を変数として使用できず、 name="userfile "という形式のファイル名でのみ使用できます。同じ欠点は $_FILES['userfile']['name'] です。ここで、 は任意に選択できます。 //index.htm1. 単一ファイルのアップロード 2. 複数ファイルのアップロード ; フォーム>------------------------------------------ ---------------------------------------------------- ------- ----------------------------------//upload.php class File_upload{public $upload_path='./upload/';//ファイルをアップロードするパスpublic $allow_type=array();//アップロードが許可されているファイルの種類public $ max_size='20480';//許可される最大ファイルサイズpublic $overwrite=false; //上書きモードに設定されているかどうかpublic $renamed=false;//アップロードされたファイルの名前が直接使用されるか、システムによって使用されるか自動的に名前が付けられます🎜/*** プライベート変数*/private $upload_file=array();//アップロードに成功したファイルの情報を保存private $upload_file_num=0;//アップロードに成功したファイルの数private $succ_upload_file=array() ;/ /ファイル情報の保存に成功しました/*** コンストラクター** @param string $upload_path* @param string $allow_type* @param string $max_size*/public function __construct($upload_path='./upload/',$allow_type='jpg|bmp|png|gif|jpeg',$max_size=' 204800 '){$this->set_upload_path($upload_path);$this->set_allow_type($allow_type);$this->max_size=$max_size;$this->get_upload_files(); }/*** アップロードパスを設定し、決定します ** @param string $path*/パブリック関数 set_upload_path($path){if(file_exists($path)){if(is_writeable($path)){$this->upload_path=$パス ;}else{if(@chmod($path,'0666'))$this->upload_path=$path;}}else{if(@mkdir($path,'0666') ) {$this->upload_path=$path;}}}//アップロードファイルの種類を設定しますpublic function set_allow_type($types){$this->allow_type=explode("|", $types );}//ファイルをアップロードしますpublic function get_upload_files(){foreach ($_FILES AS $key=>$field){$this->get_upload_files_detial($key);} } //アップロードファイルのデータは配列に格納されますpublic function get_upload_files_detial($field){if(is_array($_FILES["$field"]['name'])){for($i=0) ;$i< ;count($_FILES[$field]['name']);$i++){if(0==$_FILES[$field]['error'][$i]){$ this-> ;upload_file[$this->upload_file_num]['name']=$_FILES[$field]['name'][$i];$this->upload_file[$this->upload_file_num] ['type ']=$_FILES[$field]['type'][$i];$this->upload_file[$this->upload_file_num]['size']=$_FILES[$field][ 'サイズ' ][$i];$this->upload_file[$this->upload_file_num]['tmp_name']=$_FILES[$field]['tmp_name'][$i];$this- >upload_file [$this->upload_file_num]['error']=$_FILES[$field]['error'][$i];$this->upload_file_num++;}}}else { if( 0==$_FILES["$field"]['error']){$this->upload_file[$this->upload_file_num]['name']=$_FILES["$field" ][' 名前'];$this->upload_file[$this->upload_file_num]['type']=$_FILES["$field"]['type'];$this->upload_file[ $this->upload_file_num]['size']=$_FILES["$field"]['size'];$this->upload_file[$this->upload_file_num]['tmp_name']=$_FILES ["$ フィールド"]['tmp_name'];$this->upload_file[$this->upload_file_num]['error']=$_FILES["$field"]['error'];$this ->upload_file_num++;}}}/*** アップロードされたファイルが指定された条件を満たしているか確認します **/public function check($i){if(!empty($this->upload_file[$i]['name' ])) {//ファイル サイズを確認しますif($this->upload_file[$i]['size']>$this->max_size*1024)$this->upload_file[$i][ 'error' ]=2;//デフォルトのサーバーファイル名を設定します$this->upload_file[$i]['filename']=$this->upload_path.$this->upload_file[$i] ['name '];//ファイルパス情報を取得$file_info=pathinfo($this->upload_file[$i]['name']);//ファイル拡張子を取得$file_ext=$file_info[' extension' ];//ファイルの種類を確認してくださいif(!in_array($file_ext,$this->allow_type))$this->upload_file[$i]['error']=5;//必要名前を変更する if($this->renamed){list($usec, $sec) =explode(" ",microtime());$this->upload_file[$i]['filename'] =$sec .substr($usec,2).'.'.$file_ext;unset($usec);unset($sec);}//ファイルが存在するかどうかを確認しますif(file_exists($this ->upload_file [$i]['filename'])){if($this->overwrite){@unlink($this->upload_file[$i]['filename']);} else{$ j=0;do{$j++;$temp_file=str_replace('.'.$file_ext,'('.$j.').'.$file_ext,$this->upload_file[ $i][ 'filename']);}while (file_exists($temp_file));$this->upload_file[$i]['filename']=$temp_file;unset($temp_file);unset ($j) ;}}//チェック完了} else $this->upload_file[$i]['error']=6;}/*** ファイルをアップロード** @return true*/パブリック関数アップロード(){ $upload_msg='';for($i=0;$i<$this->upload_file_num;$i++){if(!empty($this->upload_file[$i] ['name' ])){//ファイルをチェックします$this->check($i);if (0==$this->upload_file[$i]['error']) {//ファイルをアップロードする if(!@move_uploaded_file($this->upload_file[$i]['tmp_name'],$this->upload_file[$i]['filename'])){$upload_msg.='アップロードファイル '.$this->upload_file[$i]['name'].' エラー: '.$this->error($this->upload_file[$i]['error']).'! ';}else{ $this->succ_upload_file[]=$this->upload_file[$i]['ファイル名'];$upload_msg.='ファイルをアップロード'.$this- >upload_file[$i]['name'].' 成功しました';}}else $upload_msg.='ファイルをアップロード'.$this->upload_file[$i]['name' ]。 ' エラー:'.$this->error($this->upload_file[$i]['error']).'!';}}echo $upload_msg;} / /エラーメッセージpublic function error($error){switch ($error) {case 1:return 'ファイルサイズがphp.iniのupload_max_filesizeオプションで制限されている値を超えています';break;case 2 : return 'ファイルのサイズが HTML フォームの MAX_FILE_SIZE オプションで指定された値を超えています';break;case 3:return 'ファイルの一部のみがアップロードされました';break;case 4: return 'ファイルはアップロードされませんでした' ;break;case 5:return 'このファイルはアップロードできません';break;case 6:return 'ファイル名が空です';break;default :return 'Error';break; }}//成功データ情報を配列として取得(待機)public function get_succ_file(){return $this->succ_upload_file;}} $upload=new File_upload('./upload/' ,'jpg|bmp|png|gif|jpeg');$upload->upload();$t=$upload->get_succ_file(); print_r($t);?> http://www.bkjia.com/PHPjc/445064.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/445064.html技術記事これは、単一ファイルと複数ファイルのアップロード コードを真にサポートし、$_FILES[ $field ]['name'] が変数を使用できず、$_FILES[ 形式のファイル名 name= userfile とのみ一致できるという欠点を修正します。 .