当前位置:首页 > PHP教程 > php上传下载 > 列表

php多文件上传 多图片上传程序代码

发布:smiling 来源: PHP粉丝网  添加日期:2014-09-22 16:36:53 浏览: 评论:0 

多文件上传其实就包括了图片及各种文件了,下面介绍的是一款PHP多文件上传类,一共两个文件,upp.php 和 uploadFile.php,upp.php,这是前台所显示的表单文件了,默认的是四个上传文件域,我们可以手动进行修改,另外这个页面嵌套了 uploadFile.php 文件上传类,下面一起来看例子.

php文件上传例子,代码如下:

  1. <?php 
  2. header('content-type:text/html;charset=utf-8'); 
  3. require('uploadFile.php'); 
  4. if(isset($_POST['submit'])){ 
  5. $uploads = $_FILES['file']; 
  6. $num_file = count($uploads['name']); 
  7. $up = new UploadFile($uploads,'uploads',1024); 
  8. $num = $up->upload(); 
  9. if($num == $num_file ){ 
  10. echo '全部文件上传成功'
  11. exit
  12. }else
  13. echo $num,'个文件上传成功<br/>'
  14. echo $up->showErrorInfo(); 
  15. exit
  16. ?> 
  17.  
  18. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  19. <html xmlns="http://www.111cn.net/ 1999/xhtml"
  20. <head> 
  21. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  22. <title>无标题文档</title> 
  23. </head> 
  24. <body> 
  25. <form action="uup.php" method="post" enctype="multipart/form-data"
  26. <p><input name="file[]" type="file" /></p> 
  27. <p><input name="file[]" type="file" /></p> 
  28. <p><input name="file[]" type="file" /></p> 
  29. <p><input name="file[]" type="file" /></p> 
  30. <input name="submit" type="submit" /> 
  31. </form> 
  32. </body> 
  33. </html> 

PHP文件上传类代码,代码如下:

  1. <?php 
  2. /*------------*/ 
  3. class UploadFile 
  4. var $user_post_file  = array(); 
  5. var $save_file_path  = ''
  6. var $max_file_size   = ''
  7. var $allow_type      = array('gif','jpg','png','zip','rar','txt','doc','pdf'); 
  8. var $final_file_path = ''
  9. var $save_info       = array(); 
  10. var $error_info      = array(); 
  11. /** 
  12. *构造函数,用于初始化信息。 
  13. * 
  14. *@param Array $file 
  15. *@param String $path 
  16. *@param Integer $size 
  17. *@param Array $type 
  18. */ 
  19. function __construct($file,$path,$size = 2097152,$type=''
  20. $this->user_post_file   = $file
  21. $this->save_file_path   = $path
  22. $this->max_file_size    = $size
  23. if(!$type=''){ 
  24. $this->allow_type[] = $type
  25. /** 
  26. * 
  27. * 
  28. *@access public 
  29. *@return int 
  30. */ 
  31. function upload() 
  32. for($i=0;$i<count($this->user_post_file['name']);$i++) 
  33. if($this->user_post_file['error'][$i] == 0){//上传文件状态正常 
  34. //获取当前文件名,临时文件名,大小,类型,扩展名 
  35. $name     = $this->user_post_file['name'][$i]; 
  36. $tmp_name = $this->user_post_file['tmp_name'][$i]; 
  37. $size     = $this->user_post_file['size'][$i]; 
  38. $type     = $this->user_post_file['type'][$i]; 
  39. $ext_name = $this->getExtName($name); 
  40. //文件大小 
  41. if(!$this->checkSize($size)){ 
  42. $this->error_info[] = '您上传的文件:'.$name.'太大'
  43. continue
  44. //扩展名 
  45. if(!$this->checkType($ext_name)){ 
  46. $this->error_info[] = '您上传的文件:'.$name.'不合法'
  47. continue
  48. //非法上传 
  49. if(!is_uploaded_file($tmp_name)){ 
  50. $this->error_info[] = '您上传的文件:'.$name.'属于非法提交'
  51. continue
  52. // 
  53. $basename = $this->getBaseName($name,".".$ext_name); 
  54. $final_filename = $basename.'-'.time().'-'.rand(1,10000).'.'.$ext_name
  55. $this->final_file_path = $this->save_file_path.'/'.$final_filename
  56. if(!move_uploaded_file($tmp_name,$this->final_file_path)){ 
  57. $this->error_info = $this->user_post_file['error'][$i]; 
  58. continue
  59. // 
  60. $this->save_info[] = array
  61. "name" => $name
  62. "ext_name" => $ext_name
  63.           "type" => $type
  64.                             "size" => $size,  
  65. "final_filename" => $final_filename
  66.                             "path" => $this->final_file_path 
  67. );  
  68. return count($this->save_info); 
  69. /* 
  70.  *检查用户上传文件的大小时候合法 
  71.  * 
  72.  *@param Integer $size 
  73.  *@access private 
  74.  *@return boolean 
  75.  */ 
  76. function checkSize($size
  77. if($size > $this->max_file_size){ 
  78. return FALSE; 
  79. return TRUE; 
  80. /* 
  81.  *检查用户上传文件的类型是否合法 
  82.  * 
  83.  *@access private 
  84.  *@return boolean 
  85.  */ 
  86. function checkType($extension
  87. foreach($this->allow_type as $type){ 
  88. if(strcasecmp($extension,$type) == 0){ 
  89. return TRUE; 
  90. return FALSE; 
  91. /* 
  92.  *获取文件的扩展名 
  93.  * 
  94.  *@param string $filename 
  95.  *@access private 
  96.  *@return string 
  97.  */ 
  98. function getExtName($filename
  99. $p = pathinfo($filename); 
  100. return $p['extension']; 
  101. /* 
  102.  *获取文件名(不包括扩展名) 
  103.  * 
  104.  *@param string $filename 
  105.  *@param string $type 
  106.  *@access private 
  107.  *@return boolean 
  108.  */ 
  109. function getBaseName($filename,$ext_name
  110. $basename = basename($filename,$ext_name); 
  111. return $basename
  112. /* 
  113.  * 
  114.  * 
  115.  * 
  116.  */ 
  117. function showErrorInfo() 
  118. if(count($this->error_info) != 0){ 
  119. //echo 'error...<br/>'; 
  120. foreach($this->error_info as $k=>$v){ 
  121. echo ($k+1),':',$v,'<br/>'
  122. }//开源代码phpfensi.com 
  123. function getSaveInfo() 
  124. return $this->save_info; 
  125. //$upload = new UploadFile('',''); 
  126. //$upload = new UploadFile(); 
  127. //$upload->showErrorInfo(); 
  128. ?>

Tags: php多文件上传 php多图片上传

分享到: