国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

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

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

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

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

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

  1. <?php 
  2. define('NO_FILE''不存在上傳文件'); 
  3. define('NOT_ALLOW_EXT''文件類型不在允許范圍內'); 
  4. define('NOT_ALLOW_SIZE''文件大小不在允許范圍內'); 
  5. define('HAS_THE_FILE''該文件已經存在'); 
  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. /***使用方法與參數說明***/ 
  91. /*** 
  92. 第一個參數$dir 為上傳文件存放的路徑 
  93. 第二個參數為$_FILES 為你那個上傳文件變量 
  94. 第三個參數允許文件大小 單位為MB 
  95. 第四個參數允許的文件類型 格式為jpg|png|gif 
  96. 第五個參數是否需要生成新的文件名 
  97. 第六個參數為返回的提示格式 0為直接提示上傳正確 1則返回一個數組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. ?> 

調用方法

代碼如下

 

 
  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(); 

補充說明:

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 舞阳县| 盐山县| 紫阳县| 甘洛县| 广安市| 宜兰市| 枣强县| 栾城县| 黄龙县| 商河县| 成都市| 沁阳市| 秦安县| 南京市| 读书| 呼和浩特市| 肃宁县| 清远市| 武威市| 隆昌县| 吉木乃县| 新乐市| 昌邑市| 旺苍县| 鹤岗市| 韩城市| 哈尔滨市| 平谷区| 桂阳县| SHOW| 平阴县| 姚安县| 乌拉特后旗| 仁怀市| 鄯善县| 咸阳市| 分宜县| 奎屯市| 武陟县| 蕉岭县| 育儿|