php文件上传类,支持单个或者多个文件上传

这个文件上传类可以实现多个文件或单个文件进行上传了,下面小编来给各位推荐一个不错的例子,实例代码如下:

  1. <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.phpfensi.com/1999/xhtml">
  3. <head>
  4. <meta http-equiv="content-type" content="text/html; charset=gb2312" />
  5. <title>无标题文档</title>
  6. </head>
  7. <body>
  8. <?php
  9. //php文件上传类(该类支持单个或者多个文件上传)
  10. /**
  11. * 类名:upfile
  12. * 作用:处理文件上传
  13. * 说明,该类处理单个或者多个文件上传,使用该类时,只需要实列化该类
  14. * 例:
  15. * $up = upfile()
  16. * $up->update_file($_file['filename'])
  17. *
  18. * $up->update_file 函数返回一个数组,如果是多文件上传,则为多维数据。
  19. * 数组的内容:
  20. * $fileinfo['file_size'] 上传文件的大小
  21. * $fileinfo['file_suffix'] 上传文件的类型
  22. * $fileinfo['file_name'] 上传文件的名字
  23. * $fileinfo['error'] 上传文件产生的错误
  24. *
  25. */
  26. class upfile {
  27. public $fcount = 1; //上传文件的数量
  28. public $ftype = array('jpg','jpeg','gif','png'); //文件格式
  29. public $fsize = 1024; //文件大小单位kb
  30. public $fdir = 'www.111cn.net/'; //文件存放目录
  31. public $errormsg = ''; //产生的临时错误信息
  32. /**
  33. *函数名:get_tmp_file($putfile)
  34. *作用:取得上传的临时文件名
  35. *@param array $putfile
  36. *@return string $upimg 返回临时文件名
  37. */
  38. function get_tmp_file($putfile){
  39. if($this->fcount == 1){
  40. $tmpfile = $putfile['tmp_name'];
  41. }else{
  42. for($i=0;$i<$this->fcount;$i++){
  43. $tmpfile[] = $putfile['tmp_name'][$i];
  44. }
  45. }
  46. return $tmpfile;
  47. }
  48. /**
  49. *函数名:get_suffix($filename)
  50. *作用:取得文件的后缀名
  51. *@param file $filename
  52. *@return string $suffixname 返回后缀名
  53. */
  54. function get_suffix($filename){
  55. $link = pathinfo($filename);
  56. $suffixname = strtolower($link['extension']);
  57. return $suffixname;
  58. }
  59. /**
  60. *验证文件大小
  61. *@author 赵红健
  62. *@param $filesize
  63. *@return booln
  64. */
  65. function check_file_size($filesize){
  66. $this->errormsg = '';
  67. if($filesize/1000 > $this->fsize){
  68. $this->errormsg = '警告:文件超出大小!';
  69. return false;
  70. }else{
  71. return true;
  72. }
  73. }
  74. /**
  75. *验证文件类型是否合法
  76. *@author 赵红健
  77. *@param $filesuffix
  78. *@return booln
  79. */
  80. function check_file_suffix($filesuffix){
  81. $this->errormsg = '';
  82. if(!in_array($filesuffix,$this->ftype)){
  83. $this->errormsg = '警告:文件类型不在允许范围内!';
  84. return false;
  85. }else{
  86. return true;
  87. }
  88. }
  89. /**
  90. *移动临时文件
  91. *@author 赵红健
  92. *@param $filesuffix
  93. *@return booln
  94. */
  95. function move_temp_file($tmpfile,$targetfile){
  96. $this->errormsg = '';
  97. if(!move_uploaded_file($tmpfile,$targetfile)){
  98. $this->errormsg = '警告:文件移动失败!';
  99. return false;
  100. }else{
  101. return true;
  102. }
  103. }
  104. /**
  105. *函数名:update_file($putfile)
  106. *作用:上传文件
  107. *@param array $putfile
  108. *@return array 文件信息
  109. */
  110. function update_file($putfile){
  111. $tmpfile = $this->get_tmp_file($putfile);
  112. if(!file_exists($this->fdir)){
  113. $this->errormsg[] = '错误:目录'.$this->fdir.'不存在';
  114. return $this->errormsg;
  115. }
  116. $this->fdir = substr($this->fdir,strlen($this->fdir)-1,1)=='/'?$this->fdir:$this->fdir.'/';
  117. if(!is_array($putfile['size'])){
  118. $fileinfo['file_size'] = $putfile['size'];
  119. if(!$this->check_file_size($fileinfo['file_size'])){
  120. $fileinfo['error'] = $this->errormsg;
  121. return $fileinfo;
  122. }
  123. $fileinfo['file_suffix'] = $this->get_suffix($putfile['name']);
  124. if(!$this->check_file_suffix($fileinfo['file_suffix'])){
  125. $fileinfo['error'] = $this->errormsg;
  126. return $fileinfo;
  127. }
  128. $fileinfo['file_name'] = date('ymdhms').'.'.$fileinfo['file_suffix'];
  129. if(!$this->move_temp_file($tmpfile,$this->fdir.$fileinfo['file_name'])){
  130. $fileinfo['error'] = $this->errormsg;
  131. return $fileinfo;
  132. }
  133. return $fileinfo;
  134. }else{
  135. for($i=0;$i<$this->fcount;$i++){
  136. $fileinfo[$i]['file_size'] = $putfile['size'][$i];
  137. if(!$this->check_file_size($fileinfo[$i]['file_size'])){
  138. $fileinfo[$i]['error'] = $this->errormsg;
  139. continue;
  140. }
  141. $fileinfo[$i]['file_suffix'] = $this->get_suffix($putfile['name'][$i]);
  142. if(!$this->check_file_suffix($fileinfo[$i]['file_suffix'])){
  143. $fileinfo[$i]['error'] = $this->errormsg;
  144. continue;
  145. }
  146. $fileinfo[$i]['file_name'] = date('ymdhms').rand().'.'.$fileinfo[$i]['file_suffix'];
  147. if(!$this->move_temp_file($tmpfile[$i],$this->fdir.$fileinfo[$i]['file_name'])){
  148. $fileinfo[$i]['error'] = $this->errormsg;
  149. continue;//开源代码phpfensi.com
  150. }
  151. }
  152. return $fileinfo;
  153. }
  154. }
  155. }
  156. ?>
  157. </body>
  158. </html>