ホームページ  >  記事  >  バックエンド開発  >  php_PHP チュートリアルの実践的なファイルアップロードクラス

php_PHP チュートリアルの実践的なファイルアップロードクラス

WBOY
WBOYオリジナル
2016-07-13 16:55:02836ブラウズ

クラスのアップロード{
    /**
* HTMLフォーム入力フィールドのname属性、デフォルトは「file」です
​*/
    var $file_field = 'ファイル' ;
   
    /**
* * $_files 配列
​*/
    var $file_array;
   
    /**
* * パスを保存します。デフォルトは現在のパスです
​*/
    var $save_path = '';
   
    /**
*カスタマイズされたファイル名
​*/
    var $define_name;   
   
    /**
※最終的に保存されるファイル名
​*/
    var $name;
   
    /**
* ファイルサイズ、単位: バイト
​*/
    var $size;
   
    /**
※拡張子は「.」を除く
​*/
    var $ext;    
   
    /**
* * アップロードできるファイルの種類、デフォルトでは制限なし
​*/
    var $allow_ext = array();
   
    /**
* * アップロードできるファイルの種類、デフォルトでは制限なし
​*/
    var $allow_size = false;
   
    /**
※同名のファイルが既に存在する場合、上書きを許可するかどうかは、デフォルトでは上書きしないように設定されています。
​*/
    var $overwrite = false;
   
    /**
* エラーメッセージ
​*/
    var $error_code;
   
    /**
* コンストラクター
​*/
    パブリック関数 __construct(){
        if(!is_uploaded_file($_files[$this->file_field]['tmp_name'])){
            die("非法上传!");
        }その他{
            $this->file_array = $_files[$this->file_field];
            $this->name = $this->getpro('name');
            $this->size = $this->getpro('size');
            $this->ext = $this->getpro('ext');   
        }
    }
   
   
    /**
*アップロード操作機能
* @abstract アップロードが成功した場合は true を返し、それ以外の場合は対応するエラー コードを返します
* @return 文字列またはブール
​*/
    パブリック関数アップロード(){
        if(is_uploaded_file($this->file_array['tmp_name'])){
               
            if(!empty($this->allow_ext)){
                if(!in_array($this->ext,$this->allow_ext)){
                    $this->error_code = "不允许上传该类型文件!";   
                    false を返します;
                }
            }
           
            if(!@file_exists(iconv('utf-8','gbk',$this->save_path))){
$this->error_code = "ファイルのアップロード ディレクトリが存在しません!";
false を返す;
}
                                                If(!is_writable(iconv('utf-8','gbk',$this->save_path))){
$this->error_code = "ファイルのアップロード ディレクトリに書き込むことができません!";
false を返す;
}
                                                If($this->overwrite==false && @file_exists(iconv('utf-8','gbk',$this->save_path.$this->name))){
$this->error_code = "ファイルはすでに存在します!";
false を返す;
}
                                                If($this->allow_size){
If($this->size > $this->allow_size){
​​​​​​​​​ return false;
}
}
                                                $result = @move_uploaded_file($this->file_array['tmp_name'],iconv("utf-8","gbk",$this->save_path.$this->getpro("name"))) ; if($result){
true を返す;
}その他{
switch($this->file_array['error']){
ケース 1:
$ This-& gt; error_code = "アップロードされたファイルが、upload_max_filesize オプションで制限された値を超えました!"; 休憩;
ケース 2:
$this->error_code = "アップロードされたファイルのサイズが、max_file_size オプションで指定された値を超えています!";
休憩;
ケース 3:
​​​​​​​​​​​​ 休憩;
ケース 4:
​​​​​​​​​​​ 休憩;
ケース6:
​​​​​​​​​​​​​ 休憩;
ケース7:
$this->error_code = "ファイルの書き込みに失敗しました!";
休憩;
}
false を返す;
}
}
}

/**
*アップロード操作機能
* @abstract ファイル属性を取得します
* @param $itme: 文字列タイプ、有効な入力は name (ファイル名)、ext (ファイル拡張子)、size (ファイル サイズ) です
* @戻り文字列
​*/
パブリック関数 getpro($item){
スイッチ($item){
ケース「名前」:
$filename = $this->file_array['name'];
return isset($this->define_name) ? $this->define_name.".".$this->ext : $filename;
壊す; ケース "ext":
$filename = $this->file_array['name'];
$filter =explode(".",$filename);
return strto lower($filter[count($filter)-1]);
休憩;
ケース「サイズ」:
return $this->file_array['size'];
休憩;
デフォルト:
die("違法操作!");
休憩;
}
}
}


http://www.bkjia.com/PHPjc/631718.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/631718.html技術記事 class Upload{ /*** HTMLフォーム入力フィールドのname属性、デフォルトは「file」です*/ var $file_field = 'file' /*** $_files 配列*/ var $file_array; /** * パスを保存します。デフォルトは現在のパスです...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。