ホームページ >バックエンド開発 >PHPチュートリアル >PHP ファイルアップロードの完璧な使用例 class_PHP チュートリアル

PHP ファイルアップロードの完璧な使用例 class_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:49:05876ブラウズ

このファイルアップロードクラスは、アップロードファイルのサイズ、アップロードファイルの種類、ファイルの保存アドレスをカスタマイズでき、非常に便利です。ファイル名が中国語の場合、アップロード時に文字化けするので、その解決策を説明します。それを解決するには、ページを変更してuft8として保存することです。

今日、ようやくpaperenのウェブサイトを更新できます。 さて、論文を書くのに疲れたので、このカテゴリも自分で書きましたが、皆さんに役立つかどうかはわかりません。使えると思うなら使ってください。ただし、utf8 ページでデータを送信したため、生成されたファイルが元の中国語名のままだと、フォルダー内の名前が文字化けしてしまいます。文字化けがある場合は、エンコード変換を行う必要があります。 ?

コードは次のとおりです コードをコピー

define('NO_FILE', 'アップロードされたファイルは存在しません');
define('NOT_ALLOW_EXT', 'ファイルの種類が許可された範囲内にありません');
define('NOT_ALLOW_SIZE', 'ファイルサイズが許容範囲内にありません');
define('HAS_THE_FILE', 'ファイルはすでに存在します');
定義('UPLOAD_FAILED', 'アップロードに失敗しました');
定義('UPLOAD_SUCCESS', 'アップロード成功');

クラスファイルアップローダー
{

var $_file;
    var $_filesize;
    var $_fileext;
    var $_filedir;
    var $_filename;
    var $_filetmpname;
   
    var $allowsize;
    var $allowext;
   
    var $neednewname;
    var $newname;
    var $syslang;
   
    var $report;
   
    functionready($filedir = '', $file, $allowsize = '', $allowext = '', $neednewname = false, $report = 0){
        $this->_filedir = is_dir($filedir) ? $filedir : '';
        if(empty($file) || !isset($file['size']) || $file['size'] == 0) $this->error(NO_FILE);
        $this->_filesize = $file['size'];
        $this->_filename = $file['name'];
        $this->_filetmpname = $file['tmp_name'];
       
        $this->allowsize = $allowsize;
        $this->allowext = $allowext;
       
        $this->neednewname = ($neednewname) ? true : false;
        $this->新しい名前 = '';
       
        $this->レポート = $レポート;
    }
   
    関数 do_upload(){
        if(!is_uploaded_file($this->_filetmpname)) $this->error(NO_FILE);
        if($this->chk_ext()){
            $this->error(NOT_ALLOW_EXT);
            戻ります '';
        }
        if($this->chk_size()){
            $this->error(NOT_ALLOW_SIZE);
            戻ります '';
        }
        if($this->neednewname) $this->newname = $this->generate_name().".".$this->get_fileext();
        if($this->chk_hasfile()){
            $this->error(HAS_THE_FILE);
            戻ります '';
        }
        $filename = empty($this->newname) ? @iconv('utf-8','gb2312',$this->_filename) : $this->newname;
        @chmod($this->_filedir.$filename, 0777);
        if(move_uploaded_file($this->_filetmpname, $this->_filedir.$filename)){
            $this->result();
を返す         }その他{
            $this->error(UPLOAD_FAILED);
            戻ります '';
        }
    }
   
    関数 chk_ext(){
        if(empty($this->allowext) || in_array($this->get_fileext(),explode("|",$this->allowext))) return false;
        true を返します;
    }
   
    関数chk_size(){
        if(empty($this->allowsize) || get_filesize <= $this->allowsize*1024*1024) return false;
        true を返します;
    }
   
    関数 get_filesize(){
        $this->_filesize を返す;
    }
   
    関数 get_fileext(){
        return substr($this->_filename,strrpos($this->_filename,".")+1);
    }
   
    関数generate_name(){
        return substr(md5(time()),26);
    }
   
    関数chk_hasfile(){
        return is_file($this->_filedir.$this->_filename);
    }
   
    関数エラー($tip){
        エコー $tip;
    }
   
    関数 result(){
        if($this->レポート){
            $filename = empty($this->newname) ? $this->_filename : $this->新しい名前;
            $arr = array('filename' => $filename, 'filesize' => $this->_filesize, 'tip' => UPLOAD_SUCCESS);
            $arr を返します;
        }その他{
            UPLOAD_SUCCESS を返します;
        }
    }
}

/***使用方法とパラメーター***/
/***
最初のパラメータ $dir は、アップロードされたファイルが保存されるパスです
2 番目のパラメーターは $_FILES で、アップロード ファイル変数です
3 番目のパラメーターでは、ファイル サイズを MB 単位で指定できます
4 番目のパラメータで許可されるファイルの種類は jpg|png|gif です
5 番目のパラメーターは新しいファイル名を生成する必要がありますか? 6 番目のパラメータは返されるプロンプト形式です。0 は正しいアップロードの直接プロンプトを意味します。1 は配列 array('filename' => $filename, 'filesize' => $this->_filesize, 'tip' =>) を返します。 ; アップロード_成功);
***/

//require("类文件");

//$u = 新しいファイルアップローダー;
//$u->ready($dir, $_FILES['upload_file'], false, false, true, 0);
//エコー $u->do_upload();

?>

随便说下这个类怎样调用吧,方法很简单?

代码如下复制幣
$dir = 'アップロード/';

    require("upload_class.php");
    $u = 新しいファイルアップローダー;
    $u->ready($dir, $_FILES['upload_file'], false, false, true, 0);
    echo $u->do_upload();

N 年前の汚染ファイルの報告の場合、「左へ!汚染ファイルの発行はこれだけの一品です!」と同様に、ここで上に転送されるファイルの操作も「上に転送されるファイルはこれだけの一品です!」です。当然のことながら、$_FILES[ 'upload_file'] は、アプリケーション内のファイル タイプに対するコントロールの名前です。上方に転送された後に自分自身を参照するためのプロンプトを出力する必要はありません。パラメーターについては、ここでも公開されているわけではありませんが、ここで詳細に説明されています。

準備ができた方法のパラメータ説明:

最初のパラメータ $dir は上に転送されたファイルが保存されている経路です

2 番目のパラメータは $_FILES で、上にあるファイルの量です

第三のパラメータ允许文件大小单位はMB
4 番目のパラメータで許可されるファイルの種類 形式はjpg|png|gif
5 番目のパラメータは、新しいファイル名を生成する必要があるかどうか
6 番目のパラメータは返される提案形式です。 0 は直接正确を提案します。 1 は数集合配列('filename' => 上の文書名, 'filesize' => 文書サイズ, 'tip' => 成功上传を返します) );?

很好!这样就完一篇文章,不过也花了不少時間呢……?

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632737.html技術記事このファイルアップロードクラスは、アップロードファイルのサイズ、アップロードファイルの種類、ファイルストレージアドレスをカスタマイズでき、ファイル名が中国語の場合...
というテキストもあります。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。