亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

一個非常實用的php文件上傳類

2024-05-04 23:58:29
字體:
來源:轉載
供稿:網友

其實網上已經有很多這樣的類了,不過出于練手的目的還是自己仿照著寫了一個。

下面的代碼放在一個名為UploadFile.class.php文件內

<?php  /**   * 文件上傳   * author:師少兵   * email :beibeijing163@163.com   * time :2012/12/09   */  class UploadFile{    private $max_size   = '2000000'; //設置上傳文件的大小,此為2M    private $rand_name   = true;   //是否采用隨機命名    private $allow_type  = array();  //允許上傳的文件擴展名    private $error     = 0;     //錯誤代號    private $msg      = '';    //信息    private $new_name   = '';    //上傳后的文件名    private $save_path   = '';    //文件保存路徑    private $uploaded   = '';    //路徑.文件名    private $file     = '';    //等待上傳的文件    private $file_type   = array();  //文件類型    private $file_ext   = '';    //上傳文件的擴展名    private $file_name   = '';    //文件原名稱    private $file_size   = 0;     //文件大小    private $file_tmp_name = '';    //文件臨時名稱        /**     * 構造函數,初始化     * @param string $rand_name 是否隨機命名     * @param string $save_path 文件保存路徑     * @param string $allow_type 允許上傳類型        $allow_type可為數組  array('jpg', 'jpeg', 'png', 'gif');        $allow_type可為字符串 'jpg|jpeg|png|gif';中間可用' ', ',', ';', '|'分割     */    public function __construct($rand_name=true, $save_path='./upload/', $allow_type=''){      $this->rand_name = $rand_name;      $this->save_path = $save_path;      $this->allow_type = $this->get_allow_type($allow_type);    }        /**     * 上傳文件     * 在上傳文件前要做的工作     * (1) 獲取文件所有信息     * (2) 判斷上傳文件是否合法     * (3) 設置文件存放路徑     * (4) 是否重命名     * (5) 上傳完成     * @param array $file 上傳文件     *     $file須包含$file['name'], $file['size'], $file['error'], $file['tmp_name']     */    public function upload_file($file){      //$this->file   = $file;      $this->file_name   = $file['name'];      $this->file_size   = $file['size'];      $this->error     = $file['error'];      $this->file_tmp_name = $file['tmp_name'];            $this->ext = $this->get_file_type($this->file_name);            switch($this->error){        case 0: $this->msg = ''; break;        case 1: $this->msg = '超出了php.ini中文件大小'; break;        case 2: $this->msg = '超出了MAX_FILE_SIZE的文件大小'; break;        case 3: $this->msg = '文件被部分上傳'; break;        case 4: $this->msg = '沒有文件上傳'; break;        case 5: $this->msg = '文件大小為0'; break;        default: $this->msg = '上傳失敗'; break;      }      if($this->error==0 && is_uploaded_file($this->file_tmp_name)){        //檢測文件類型        if(in_array($this->ext, $this->allow_type)==false){          $this->msg = '文件類型不正確';          return false;        }        //檢測文件大小        if($this->file_size > $this->max_size){          $this->msg = '文件過大';          return false;        }      }      $this->set_file_name();      $this->uploaded = $this->save_path.$this->new_name;      if(move_uploaded_file($this->file_tmp_name, $this->uploaded)){        $this->msg = '文件上傳成功';        return true;      }else{        $this->msg = '文件上傳失敗';        return false;      }    }        /**    * 設置上傳后的文件名    * 當前的毫秒數和原擴展名為新文件名    */    public function set_file_name(){      if($this->rand_name==true){        $a = explode(' ', microtime());        $t = $a[1].($a[0]*1000000);        $this->new_name = $t.'.'.($this->ext);      }else{        $this->new_name = $this->file_name;      }    }        /**    * 獲取上傳文件類型    * @param string $filename 目標文件    * @return string $ext 文件類型    */    public function get_file_type($filename){      $ext = pathinfo($filename, PATHINFO_EXTENSION);      return $ext;    }        /**     * 獲取可上傳文件的類型     */    public function get_allow_type($allow_type){      $s = array();      if(is_array($allow_type)){        foreach($allow_type as $value){          $s[] = $value;        }      }else{        $s = preg_split("/[/s,|;]+/", $allow_type);      }      return $s;    }        //獲取錯誤信息    public function get_msg(){      return $this->msg;    }  }?>

其實上面的代碼中還有一個可以改進的地方,就是將那些以‘file_'開頭的變量縮寫為一個$file數組,這樣感覺更好一些。

下面我們來測試一下上面的代碼。我在一個名為upfile.php文件寫測試代碼,同時將UploadFile.class.php放在同一個路徑下。

<html><head>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  <title>upfile</title></head><body>  <?php    require 'UploadFile.class.php';    if(isset($_POST['sf']) && $_POST['sf']=='sf'){      if ($_FILES["file"]["error"] > 0){        echo "Error: " . $_FILES["file"]["error"] . "<br />";      }else{        $file = $_FILES['file'];                $upload = new UploadFile(true, './images/', array('jpg', 'jpeg', 'png'));        $upload->upload_file($file);        echo $upload->get_msg();      }    }else{  ?>  <form action="" method='post' enctype="multipart/form-data">    <input type="file" name="file" id="file" />    <input type="hidden" name="sf" value="sf"/>    <input type="submit" value="上傳" name="sub" />  </form>  <?php    }  ?></body></html>

在上面的代碼中,我們可以嘗試修改第15行的參數,用來判斷一下我們寫的方法是否正確。

這3個參數的含義分別表示:是否使用系統命名、文件存放的路徑(相對)、允許上傳的文件類型。那么就試試修改這3個參數會發生什么樣的變化:(1)把true改為false是否就可以使用它原來的名字了;(2)改下存放路徑,看看能不能依然能夠上傳;(3)試試上傳幾個不允許的文件,看能不能禁止住,而且關鍵第三個參數有兩種形式,一種是數組,就像示例中一樣;還有一種是字符串,用分隔符隔開就行, 'jpg|jpeg|png|gif', 'jpg jpeg png gif', 'jpg,jpeg,png,gif'都行。

好的,文件上傳類就這樣寫好了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲美女黄色片| 国产精品入口夜色视频大尺度| …久久精品99久久香蕉国产| 91社影院在线观看| 国产精品免费观看在线| 国产视频自拍一区| 国产精品久久久久久久久免费看| 国产欧美日韩免费看aⅴ视频| 91干在线观看| 亚洲欧美日韩一区二区三区在线| 在线播放国产一区二区三区| 成人精品视频99在线观看免费| 欧美人交a欧美精品| 国产一区二区三区日韩欧美| 日韩二区三区在线| 久久久在线视频| 欧美成人一区二区三区电影| 最近2019中文免费高清视频观看www99| 懂色av中文一区二区三区天美| 91视频免费网站| 韩国国内大量揄拍精品视频| 欧美午夜激情小视频| 国产成人免费91av在线| 欧美在线视频免费| 欧美日韩中国免费专区在线看| 欧美成在线视频| 久久精品一本久久99精品| 国内精品美女av在线播放| 亚洲国产欧美久久| 国产成人激情小视频| 久久久午夜视频| 国产综合福利在线| 国产精品揄拍500视频| 日韩免费av片在线观看| 中文字幕久久精品| 久久久久久久久中文字幕| 亚洲国产中文字幕在线观看| 欧美贵妇videos办公室| 精品网站999www| 国产精品久久二区| 国内精品美女av在线播放| 欧美成人国产va精品日本一级| 国产在线视频不卡| 国产成人aa精品一区在线播放| 日韩欧美一区二区三区久久| 亚洲黄色成人网| 久久久久久尹人网香蕉| 精品无人区太爽高潮在线播放| 日韩专区在线观看| 中文日韩在线视频| 亚洲开心激情网| 5252色成人免费视频| 色综久久综合桃花网| 国产精品视频自拍| 国产第一区电影| 亚洲精品国产精品自产a区红杏吧| 欧美日韩国产va另类| 日韩大陆欧美高清视频区| 国产日韩欧美黄色| 成人性教育视频在线观看| 97国产精品视频人人做人人爱| xxxx欧美18另类的高清| 欧美日韩成人精品| xxxx欧美18另类的高清| 成人啪啪免费看| 日韩中文字幕在线精品| 成人午夜在线观看| 日韩在线视频免费观看| 欧美日韩免费观看中文| 欧美巨猛xxxx猛交黑人97人| 国产精品高潮呻吟久久av黑人| 国产精品人成电影在线观看| 国产主播在线一区| 国内精品久久久久伊人av| 欧美成人激情视频免费观看| 少妇精69xxtheporn| 69av成年福利视频| 色噜噜国产精品视频一区二区| 久久久久久69| 欧美在线观看网站| 日韩风俗一区 二区| 欧美激情视频给我| 亚洲欧美国产精品专区久久| 日韩精品免费在线播放| 亚洲精品www| 欧美日韩色婷婷| 欧美成人精品在线播放| 国产精品久久久久av免费| 欧美综合国产精品久久丁香| 最近2019中文字幕在线高清| 亚洲欧美一区二区三区四区| 久久久久久国产三级电影| 91视频九色网站| 国产一区二区在线免费| 亚洲最大福利视频网站| 亚洲跨种族黑人xxx| 亚洲美女av在线播放| 亚洲国产精久久久久久久| 九九精品在线播放| 国产亚洲精品久久久久久777| 亚洲国产高清福利视频| 97国产suv精品一区二区62| 日韩av黄色在线观看| 国产精品视频yy9099| 欧美猛男性生活免费| 日韩欧美成人免费视频| 日韩电影中文字幕在线| 国产伦精品免费视频| 久久男人的天堂| 精品国产91久久久| 国产区精品视频| 久久九九精品99国产精品| 成人福利在线观看| 曰本色欧美视频在线| 国产精品18久久久久久首页狼| 欧美精品videos另类日本| 97国产真实伦对白精彩视频8| 国产成人亚洲综合青青| 日韩最新在线视频| 亚洲欧美在线免费观看| 日韩欧美成人精品| 久久人91精品久久久久久不卡| 国产精品久久久91| 亚洲精品午夜精品| 日韩欧美精品网址| 亚洲国产精品va在线| 午夜精品理论片| 免费成人高清视频| 亚洲欧美国产一本综合首页| 91在线无精精品一区二区| 欧美精品一二区| 日韩在线观看免费全集电视剧网站| 国产91成人在在线播放| 成人欧美在线视频| 亚洲精品资源在线| 日韩精品在线私人| 日本免费一区二区三区视频观看| 91色精品视频在线| 日韩毛片中文字幕| 欧美日韩在线另类| 国产99视频精品免视看7| 欧美日韩中文字幕在线视频| 国产成人免费av电影| 91色视频在线观看| 亚洲欧美另类在线观看| 亚洲国产精品国自产拍av秋霞| 日韩美女免费观看| 中文字幕av日韩| 亚洲欧美综合精品久久成人| 欧美性猛交xxxx| 97精品国产97久久久久久免费| 在线观看成人黄色| 久久97精品久久久久久久不卡| 久久精品国产91精品亚洲| 久久精品久久久久电影| 国产女人18毛片水18精品| 欧美一级大胆视频| 国产在线日韩在线| 亚洲国语精品自产拍在线观看| 69精品小视频| 国产婷婷97碰碰久久人人蜜臀| 中文字幕日韩av| 久久久中精品2020中文| 亚洲网站在线看|