一個完整的php檔案上傳類執行個體講解_php執行個體

來源:互聯網
上載者:User

這個檔案上傳類可以自定上傳檔案大小與上傳檔案類型及檔案儲存地址,在使用過程中有一個問題就是如果是中文檔案名稱進行上傳就會出現亂碼,所以大家解決辦法就是把頁面儲存成uft8即可解決。

下面就是為大家分享的代碼:

<?phpdefine('NO_FILE', '不存在上傳檔案');define('NOT_ALLOW_EXT', '檔案類型不在允許範圍內');define('NOT_ALLOW_SIZE', '檔案大小不在允許範圍內');define('HAS_THE_FILE', '該檔案已經存在');define('UPLOAD_FAILED', '上傳失敗');define('UPLOAD_SUCCESS', '上傳成功');class file_uploader{  var $_file;  var $_filesize;  var $_fileext;  var $_filedir;  var $_filename;  var $_filetmpname;    var $allowsize;  var $allowext;    var $neednewname;  var $newname;  var $syslang;    var $report;    function ready($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->newname = '';        $this->report = $report;  }    function do_upload(){    if(!is_uploaded_file($this->_filetmpname)) $this->error(NO_FILE);    if($this->chk_ext()){      $this->error(NOT_ALLOW_EXT);      return '';    }    if($this->chk_size()){      $this->error(NOT_ALLOW_SIZE);      return '';    }    if($this->neednewname) $this->newname = $this->generate_name().".".$this->get_fileext();    if($this->chk_hasfile()){      $this->error(HAS_THE_FILE);      return '';    }    $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)){      return $this->result();    }else{      $this->error(UPLOAD_FAILED);      return '';    }  }    function chk_ext(){    if(empty($this->allowext) || in_array($this->get_fileext(), explode("|",$this->allowext))) return false;    return true;  }    function chk_size(){    if(empty($this->allowsize) || get_filesize <= $this->allowsize*1024*1024) return false;    return true;  }    function get_filesize(){    return $this->_filesize;  }    function get_fileext(){    return substr($this->_filename,strrpos($this->_filename,".")+1);  }    function generate_name(){    return substr(md5(time()),26);  }    function chk_hasfile(){    return is_file($this->_filedir.$this->_filename);  }    function error($tip){    echo $tip;  }    function result(){    if($this->report){      $filename = empty($this->newname) ? $this->_filename : $this->newname;      $arr = array('filename' => $filename, 'filesize' => $this->_filesize, 'tip' => UPLOAD_SUCCESS);      return $arr;    }else{      return UPLOAD_SUCCESS;    }  }}/***使用方法與參數說明***//***  第一個參數$dir 為上傳檔案存放的路徑   第二個參數為$_FILES 為你那個上傳檔案變數   第三個參數允許檔案大小 單位為MB  第四個參數允許的檔案類型 格式為jpg|png|gif  第五個參數是否需要產生新的檔案名稱   第六個參數為返回的提示格式 0為直接提示上傳正確 1則返回一個數組array('filename' => $filename, 'filesize' => $this->_filesize, 'tip' => UPLOAD_SUCCESS);***///require("類檔案");//$u = new file_uploader;//$u->ready($dir, $_FILES['upload_file'], false, false, true, 0);//echo $u->do_upload();?>

調用方法
代碼如下   

$dir = 'upload/';  require("upload_class.php");  $u = new file_uploader;  $u->ready($dir, $_FILES['upload_file'], false, false, true, 0);  echo $u->do_upload();

補充說明:在編碼上面還是有些問題,自己是在utf8的頁面將資料進行提交的,所以產生的檔案如果保持原來的中文名字的話在檔案夾中看到就是亂碼的名字,如果不想出現亂碼的話需要進行一下編碼的轉換。

以上就是本文的全部內容,希望對大家的學習有所協助。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.