這個(gè)文件上傳類可以自定上傳文件大小與上傳文件類型及文件保存地址,使用起來也大興非常的方法,有一個(gè)文就是如果是中文文件名是上傳會(huì)是亂碼,所以大家解決辦法就是把頁面保存成uft8即可解決.
因?yàn)閷懏呍O(shè)論文寫累了所以就發(fā)表一篇關(guān)于上傳文件類的東東吧,這個(gè)類也是自己寫的,不知道對大家有沒有用,如果覺得可以就拿去用吧,不過在編碼上面還是沒做好,自己是在utf8的頁面將數(shù)據(jù)進(jìn)行提交的,所以生成的文件如果保持原來的中文名字的話在文件夾中看到就是亂碼的名字,如果不想出現(xiàn)亂碼的話需要進(jìn)行一下編碼的轉(zhuǎn)換,代碼如下:
- <?php
- define('NO_FILE', '不存在上傳文件');
- define('NOT_ALLOW_EXT', '文件類型不在允許范圍內(nèi)');
- define('NOT_ALLOW_SIZE', '文件大小不在允許范圍內(nèi)');
- define('HAS_THE_FILE', '該文件已經(jīng)存在');
- 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(emptyempty($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 = emptyempty($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(emptyempty($this->allowext) || in_array($this->get_fileext(), explode("|",$this->allowext))) return false;
- return true;
- }
- function chk_size(){
- if(emptyempty($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 = emptyempty($this->newname) ? $this->_filename : $this->newname;
- $arr = array('filename' => $filename, 'filesize' => $this->_filesize, 'tip' => UPLOAD_SUCCESS);
- return $arr;
- }else{
- return UPLOAD_SUCCESS;
- }
- }
- }
- /***使用方法與參數(shù)說明***/
- /***
- 第一個(gè)參數(shù)$dir 為上傳文件存放的路徑
- 第二個(gè)參數(shù)為$_FILES 為你那個(gè)上傳文件變量
- 第三個(gè)參數(shù)允許文件大小 單位為MB
- 第四個(gè)參數(shù)允許的文件類型 格式為jpg|png|gif
- 第五個(gè)參數(shù)是否需要生成新的文件名
- 第六個(gè)參數(shù)為返回的提示格式 0為直接提示上傳正確 1則返回一個(gè)數(shù)組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();
- ?>
隨便說下這個(gè)類怎樣調(diào)用吧,方法很簡單,代碼如下:
- $dir = 'upload/';
- require("upload_class.php");
- $u = new file_uploader;
- $u->ready($dir, $_FILES['upload_file'], false, false, true, 0);
- echo $u->do_upload();
這里上傳文件的操作也是“上傳文件就這么簡單!”,當(dāng)然那個(gè)$_FILES['upload_file']是對應(yīng)表單中的file類型的控件的名字,而需不需要在上傳后輸出提示就看你自己啦,關(guān)于參數(shù)在代碼那里面有詳細(xì)說明,不過這里也是放出來吧.
ready方法的參數(shù)說明:
第一個(gè)參數(shù)$dir 為上傳文件存放的路徑
第二個(gè)參數(shù)為$_FILES 為你那個(gè)上傳文件變量
第三個(gè)參數(shù)允許文件大小 單位為MB
第四個(gè)參數(shù)允許的文件類型 格式為jpg|png|gif
第五個(gè)參數(shù)是否需要生成新的文件名
第六個(gè)參數(shù)為返回的提示格式 0為直接提示上傳正確 1則返回一個(gè)數(shù)組array('filename' => 上傳的文件名字,'filesize' => 文件大小,'tip' => 成功上傳);
新聞熱點(diǎn)
疑難解答