VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • PHP多文件上传类实例

这篇文章主要介绍了PHP多文件上传类,实例分析了php实现多文件上传的原理与实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下.

本文实例讲述了PHP多文件上传类,分享给大家供大家参考,具体如下:

  1. <?php 
  2. /* 
  3. PHP多文件上传类 
  4. 修改:Linvo 2008-2-15 
  5. */ 
  6. class more_file_upload{ 
  7.     const FILE_PATH='../upfileclass/uploadfile/'; 
  8.     var $file_type; 
  9.     var $file_type_array; 
  10.     var $file_type_real_array; 
  11.     var $file_type_string; 
  12.     var $file_name; 
  13.     var $file_size; 
  14.     var $file_tmp_name; 
  15.     var $file_error; 
  16.     var $handledate; 
  17.     var $totalsize=0; 
  18.  
  19. function __construct($file_name,$file_error,$file_size,$file_tmp_name,$file_type){ 
  20.     $this->handledate=date('m-d-Y'); 
  21.     if (!emptyempty($file_name)){ 
  22.         $this->$file_name = $file_name; 
  23.         $this->$file_error = $file_error; 
  24.         $this->$file_size = $file_size; 
  25.         $this->$file_tmp_name = $file_tmp_name; 
  26.         $this->$file_type = $file_type; 
  27.         $this->$file_type_array = array('/', 'image/gif', 'image/jpg', 'image/jpeg', 'image/pjpeg', 'image/png'); 
  28.         $this->$file_type_real_array = array(0.1, 'jpg'=>74707370, 'gif'=>7173, 'bmp'=>6677, 'png'=>807871); 
  29.         $this->show_execute_message($this->$file_error,$this->$file_name,$this->$file_type,$this->$file_size); 
  30.     } 
  31. } 
  32.  
  33. function __destruct(){ 
  34.     $this->$file_name = NULL; 
  35.     $this->$file_error = NULL; 
  36.     $this->$file_size = NULL; 
  37.     $this->$file_tmp_name = NULL; 
  38.     $this->$file_type = NULL; 
  39.     $this->$totalsize = 0; 
  40. } 
  41.  
  42. function show_execute_message($smfileerror,$smfilename,$smfiletype,$smfilesize){ 
  43. if($smfileerror>0){ 
  44.     switch ($smfileerror){ 
  45.     case 1: $smfilemessage='<strong>文件超过服务器的约定大小!</strong>';break; 
  46.     case 2: $smfilemessage ='<strong>文件超过指定的文件大小!</strong>';break; 
  47.     case 3: $smfilemessage='<strong>文件只上传了部分!</strong>';break; 
  48.     case 4: echo "$this->$file_name ".'文件上传失败!<br/>';break; 
  49.     } 
  50.     self::__destruct(); 
  51. }else{ 
  52.     $smfiletypeflag = array_search($smfiletype,$this->$file_type_array); 
  53.  
  54. //进行真实格式验证 
  55. if($smfiletypeflag != false){ 
  56. $file = fopen($this->$file_tmp_name, "rb"); 
  57. $bin = fread(file, 10); 
  58. fclose($file); 
  59. $strInfo = @unpack("c10chars", $bin); 
  60. $typeCode = intval($strInfo['chars1'].$strInfo['chars2']); 
  61. $smfiletypeflag = array_search($typeCode, $this->$file_type_real_array); 
  62. if($smfiletypeflag == false){ //判断是否是png图片 
  63. $typeCode = intval($strInfo['chars2'].$strInfo['chars3'].$strInfo['chars4']); 
  64. $smfiletypeflag = array_search($typeCode, $this->$file_type_real_array); 
  65. if($smfiletypeflag == false){ //判断是否是jpg图片 
  66. $$typeCode = intval($strInfo['chars7'].$strInfo['chars8'].$strInfo['chars9'].$strInfo['chars10']); 
  67. $smfiletypeflag = array_search($typeCode, $this->$file_type_real_array); 
  68. } 
  69. } 
  70. } 
  71.  
  72. if($smfiletypeflag == false){ 
  73. $smfilemessage='<strong>文件类型不对,请核实!</strong>'; 
  74. self::__destruct(); 
  75. }else{ 
  76. $resflag = $$this->move_file($$this->$file_tmp_name,$this->$file_name); 
  77. if ($resflag == 1){ 
  78. $smfilemessage = '文件上传成功!'; 
  79. $this->totalsize +=  intval($smfilesize); 
  80. self::__destruct(); 
  81. }else{ 
  82. $smfilemessage = '<strong>文件上传失败!</strong>'; 
  83. self::__destruct(); 
  84. } 
  85. } 
  86. } 
  87.  
  88. $$smfilesizeformat = $this->size_BKM($smfilesize); 
  89. echo '<tr> 
  90. <td align="left" >'.$smfilename.'</td> 
  91. <td align="center" >'.$smfiletype.'</td> 
  92. <td align="center" >'.$smfilesizeformat.'</td> 
  93. <td align="center" >'.smfilemessage.'</td> 
  94. </tr>'; 
  95. } 
  96.  
  97. function move_file($mvfiletmp,$mvfilename){ //移动文件 
  98. $mvfilenamearr = explode('.',basename($mvfilename)); 
  99. $mvfilenamearr[0] = $this->rand_string(); 
  100. $mvfilename = implode('.',$mvfilenamearr); 
  101.  
  102. if (is_uploaded_file($mvfiletmp)){ 
  103. $uploadfile = self::FILE_PATH."$mvfilename"; 
  104. $result = move_uploaded_file($mvfiletmp,$uploadfile); 
  105. return $result; 
  106. } 
  107. } 
  108.  
  109. function rand_string(){ 
  110. $string = md5(uniqid(rand().microtime())); 
  111. return $string; 
  112. } 
  113.  
  114. function size_BKM($size){ // B/KB/MB单位转换 
  115. if($size < 1024) 
  116. { 
  117. $size_BKM = (string)$size . " B"; 
  118. } 
  119. elseif($size < (1024 * 1024)) 
  120. { 
  121. $size_BKM = number_format((double)($size / 1024), 1) . " KB"; 
  122. }else 
  123. { 
  124. $size_BKM = number_format((double)($size / (1024*1024)),1)." MB"; 
  125. } 
  126. return $size_BKM; 
  127. } 
  128. } 
  129. ?> 

希望本文所述对大家的php程序设计有所帮助。

出处:http://www.phpfensi.com/php/20210515/15365.html

 


相关教程