麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > PHP > 正文

一個完整的php文件上傳類實例講解

2024-05-04 23:39:52
字體:
供稿:網(wǎng)友

這篇文章主要介紹了一個完整的php文件上傳類實例,可以自定上傳文件大小與上傳文件類型及文件保存地址,需要的朋友可以參考下

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

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

  1. <?php 
  2. define('NO_FILE''不存在上傳文件'); 
  3. define('NOT_ALLOW_EXT''文件類型不在允許范圍內(nèi)'); 
  4. define('NOT_ALLOW_SIZE''文件大小不在允許范圍內(nèi)'); 
  5. define('HAS_THE_FILE''該文件已經(jīng)存在'); 
  6. define('UPLOAD_FAILED''上傳失敗'); 
  7. define('UPLOAD_SUCCESS''上傳成功'); 
  8. class file_uploader 
  9. var $_file; 
  10. var $_filesize; 
  11. var $_fileext; 
  12. var $_filedir; 
  13. var $_filename; 
  14. var $_filetmpname; 
  15.  
  16. var $allowsize; 
  17. var $allowext; 
  18.  
  19. var $neednewname; 
  20. var $newname; 
  21. var $syslang; 
  22.  
  23. var $report; 
  24.  
  25. function ready($filedir = '', $file, $allowsize = '', $allowext = '', $neednewname = false, $report = 0){ 
  26. $this->_filedir = is_dir($filedir) ? $filedir : ''
  27. if(empty($file) || !isset($file['size']) || $file['size'] == 0) $this->error(NO_FILE); 
  28. $this->_filesize = $file['size']; 
  29. $this->_filename = $file['name']; 
  30. $this->_filetmpname = $file['tmp_name']; 
  31.  
  32. $this->allowsize = $allowsize; 
  33. $this->allowext = $allowext; 
  34.  
  35. $this->neednewname = ($neednewname) ? true : false
  36. $this->newname = ''
  37.  
  38. $this->report = $report; 
  39.  
  40. function do_upload(){ 
  41. if(!is_uploaded_file($this->_filetmpname)) $this->error(NO_FILE); 
  42. if($this->chk_ext()){ 
  43. $this->error(NOT_ALLOW_EXT); 
  44. return ''
  45. if($this->chk_size()){ 
  46. $this->error(NOT_ALLOW_SIZE); 
  47. return ''
  48. if($this->neednewname) $this->newname = $this->generate_name().".".$this->get_fileext(); 
  49. if($this->chk_hasfile()){ 
  50. $this->error(HAS_THE_FILE); 
  51. return ''
  52. $filename = empty($this->newname) ? @iconv('utf-8','gb2312',$this->_filename) : $this->newname; 
  53. @chmod($this->_filedir.$filename, 0777); 
  54. if(move_uploaded_file($this->_filetmpname, $this->_filedir.$filename)){ 
  55. return $this->result(); 
  56. }else
  57. $this->error(UPLOAD_FAILED); 
  58. return ''
  59.  
  60. function chk_ext(){ 
  61. if(empty($this->allowext) || in_array($this->get_fileext(), explode("|",$this->allowext))) return false
  62. return true
  63.  
  64. function chk_size(){ 
  65. if(empty($this->allowsize) || get_filesize <= $this->allowsize*1024*1024) return false
  66. return true
  67.  
  68. function get_filesize(){ 
  69. return $this->_filesize; 
  70.  
  71. function get_fileext(){ 
  72. return substr($this->_filename,strrpos($this->_filename,".")+1); 
  73.  
  74. function generate_name(){ 
  75. return substr(md5(time()),26); 
  76.  
  77. function chk_hasfile(){ 
  78. return is_file($this->_filedir.$this->_filename); 
  79.  
  80. function error($tip){ 
  81. echo $tip; 
  82.  
  83. function result(){ 
  84. if($this->report){ 
  85. $filename = empty($this->newname) ? $this->_filename : $this->newname; 
  86. $arr = array('filename' => $filename, 'filesize' => $this->_filesize, 'tip' => UPLOAD_SUCCESS); 
  87. return $arr; 
  88. }else
  89. return UPLOAD_SUCCESS; 
  90. /***使用方法與參數(shù)說明***/ 
  91. /*** 
  92. 第一個參數(shù)$dir 為上傳文件存放的路徑 
  93. 第二個參數(shù)為$_FILES 為你那個上傳文件變量 
  94. 第三個參數(shù)允許文件大小 單位為MB 
  95. 第四個參數(shù)允許的文件類型 格式為jpg|png|gif 
  96. 第五個參數(shù)是否需要生成新的文件名 
  97. 第六個參數(shù)為返回的提示格式 0為直接提示上傳正確 1則返回一個數(shù)組array('filename' => $filename, 'filesize' => $this->_filesize, 'tip' => UPLOAD_SUCCESS); 
  98. ***/ 
  99. //require("類文件"); 
  100. //$u = new file_uploader; 
  101. //$u->ready($dir, $_FILES['upload_file'], false, false, true, 0); 
  102. //echo $u->do_upload(); 
  103. ?> 

調(diào)用方法

代碼如下

 

 
  1. $dir = 'upload/'
  2. require("upload_class.php"); 
  3. $u = new file_uploader; 
  4. $u->ready($dir, $_FILES['upload_file'], falsefalsetrue, 0); 
  5. echo $u->do_upload(); 

補(bǔ)充說明:

在編碼上面還是有些問題,自己是在utf8的頁面將數(shù)據(jù)進(jìn)行提交的,所以生成的文件如果保持原來的中文名字的話在文件夾中看到就是亂碼的名字,如果不想出現(xiàn)亂碼的話需要進(jìn)行一下編碼的轉(zhuǎn)換。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: lutube成人福利在线观看 | 在线2区 | 国产成人精品网站 | 国产成人视屏 | 成人在线观看免费观看 | 欧美囗交| www.guochanav.com | 国产日本在线 | 久久精品一区二区三区四区五区 | 国产亚洲精品久久久久久久久 | 色综合久久久久久久久久久 | 色播久久 | 在线播放中文 | 色污视频 | 国产成人av在线播放 | 精品国产一区在线 | 日韩欧美电影一区二区三区 | 精品国产一区二区三区久久久蜜 | 欧美性生活免费视频 | 国产三级在线观看a | 久久免费视频精品 | 精品一区在线视频 | 激情久久精品 | 亚洲综合视频网站 | 国产精品久久久久久久四虎电影 | 激情小视频在线观看 | 国产精品久久久久久久久久10秀 | 亚洲5区| 久久国产午夜 | 九九黄色 | 九色激情网 | 一区二区三区在线视频观看58 | 国产女厕一区二区三区在线视 | 蜜桃久久一区二区三区 | 日本黄色免费片 | 国产一区二区三区在线免费 | av手机在线免费播放 | 国产亚洲精品久久久久5区 综合激情网 | 国产午夜精品久久久久久免费视 | 亚洲小视频在线播放 | 天堂二区|