当前位置:首页 > PHP教程 > php类库 > 列表

PHP多文件上传类实例

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-15 22:01:14 浏览: 评论:0 

这篇文章主要介绍了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. function __destruct(){ 
  33.     $this->$file_name = NULL; 
  34.     $this->$file_error = NULL; 
  35.     $this->$file_size = NULL; 
  36.     $this->$file_tmp_name = NULL; 
  37.     $this->$file_type = NULL; 
  38.     $this->$totalsize = 0; 
  39.  
  40. function show_execute_message($smfileerror,$smfilename,$smfiletype,$smfilesize){ 
  41. if($smfileerror>0){ 
  42.     switch ($smfileerror){ 
  43.     case 1: $smfilemessage='<strong>文件超过服务器的约定大小!</strong>';break
  44.     case 2: $smfilemessage ='<strong>文件超过指定的文件大小!</strong>';break
  45.     case 3: $smfilemessage='<strong>文件只上传了部分!</strong>';break
  46.     case 4: echo "$this->$file_name ".'文件上传失败!<br/>';break
  47.     } 
  48.     self::__destruct(); 
  49. }else
  50.     $smfiletypeflag = array_search($smfiletype,$this->$file_type_array); 
  51.  
  52. //进行真实格式验证 
  53. if($smfiletypeflag != false){ 
  54. $file = fopen($this->$file_tmp_name"rb"); 
  55. $bin = fread(file, 10); 
  56. fclose($file); 
  57. $strInfo = @unpack("c10chars"$bin); 
  58. $typeCode = intval($strInfo['chars1'].$strInfo['chars2']); 
  59. $smfiletypeflag = array_search($typeCode$this->$file_type_real_array); 
  60. if($smfiletypeflag == false){ //判断是否是png图片 
  61. $typeCode = intval($strInfo['chars2'].$strInfo['chars3'].$strInfo['chars4']); 
  62. $smfiletypeflag = array_search($typeCode$this->$file_type_real_array); 
  63. if($smfiletypeflag == false){ //判断是否是jpg图片 
  64. $$typeCode = intval($strInfo['chars7'].$strInfo['chars8'].$strInfo['chars9'].$strInfo['chars10']); 
  65. $smfiletypeflag = array_search($typeCode$this->$file_type_real_array); 
  66.  
  67. if($smfiletypeflag == false){ 
  68. $smfilemessage='<strong>文件类型不对,请核实!</strong>'
  69. self::__destruct(); 
  70. }else
  71. $resflag = $$this->move_file($$this->$file_tmp_name,$this->$file_name); 
  72. if ($resflag == 1){ 
  73. $smfilemessage = '文件上传成功!'
  74. $this->totalsize +=  intval($smfilesize); 
  75. self::__destruct(); 
  76. }else
  77. $smfilemessage = '<strong>文件上传失败!</strong>'
  78. self::__destruct(); 
  79.  
  80. $$smfilesizeformat = $this->size_BKM($smfilesize); 
  81. echo '<tr> 
  82. <td align="left" >'.$smfilename.'</td> 
  83. <td align="center" >'.$smfiletype.'</td> 
  84. <td align="center" >'.$smfilesizeformat.'</td> 
  85. <td align="center" >'.smfilemessage.'</td> 
  86. </tr>'; 
  87.  
  88. function move_file($mvfiletmp,$mvfilename){ //移动文件 
  89. $mvfilenamearr = explode('.',basename($mvfilename)); 
  90. $mvfilenamearr[0] = $this->rand_string(); 
  91. $mvfilename = implode('.',$mvfilenamearr); 
  92.  
  93. if (is_uploaded_file($mvfiletmp)){ 
  94. $uploadfile = self::FILE_PATH."$mvfilename"
  95. $result = move_uploaded_file($mvfiletmp,$uploadfile); 
  96. return $result
  97.  
  98. function rand_string(){ 
  99. $string = md5(uniqid(rand().microtime())); 
  100. return $string
  101.  
  102. function size_BKM($size){ // B/KB/MB单位转换 
  103. if($size < 1024) 
  104. $size_BKM = (string)$size . " B"
  105. elseif($size < (1024 * 1024)) 
  106. $size_BKM = number_format((double)($size / 1024), 1) . " KB"
  107. }else 
  108. $size_BKM = number_format((double)($size / (1024*1024)),1)." MB"
  109. return $size_BKM
  110. ?> 

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

Tags: PHP多文件上传类

分享到: