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

php 实现多文件上传程序代码

发布:smiling 来源: PHP粉丝网  添加日期:2013-11-13 23:56:44 浏览: 评论:0 

php文件上传与多文件上传其它没有多大的区别,多文件上传只是我们把表单名改成数组形式,而获取利用foreach遍历就可以实现多文件上传了,动态多文件上传只要在js加一个动态增加多文件上传框,同样在php处理时就遍历一下数组就成了。

最简单的实例如下

  1. <form action="" method="post" enctype="multipart/form-data">  
  2. <p>Pictures:  
  3. <input type="file" name="pictures[]" />  
  4. <input type="file" name="pictures[]" />  
  5. <input type="file" name="pictures[]" />  
  6. <input type="submit" value="Send" />  
  7. </p>  
  8. </form>  
  9.        <?php  
  10. foreach ($_FILES["pictures"]["error"as $key => $error) {  
  11.         if ($error == UPLOAD_ERR_OK) {  
  12.             $tmp_name = $_FILES["pictures"]["tmp_name"][$key];  
  13.             $name = $_FILES["pictures"]["name"][$key];  
  14.             move_uploaded_file($tmp_name"data/$name");  
  15.         }  
  16. }  
  17. ?>  

下面分享其它朋友的例子

例1

  1. <?  
  2. //filename:multi_upload.php  
  3. if($ifupload)  
  4. {  
  5. $path=AddSlashes(dirname($PATH_TRANSLATED))."\upload\";  
  6. for($i=1;$i<=8;$i++)  
  7. {  
  8. $files="afile".$i;  
  9. if(${$files}!="none")  
  10. {  
  11. if(copy(${$files},$path.${$files."_name"}))  
  12. {  
  13. }  
  14. }  
  15. }  
  16. print "<b>You have uploaded files successfully</b><br>";  
  17. print "<a href="multi_upload.php">Return</a>";  
  18. exit;  
  19. }  
  20. ?>  
  21. <html>  
  22. <html>  
  23. <head>  
  24. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">  
  25. <meta NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">  
  26. <title>多个文件上传</title>  
  27. <style type="text/css">  
  28. <!--  
  29. BODY  
  30. {  
  31. PADDING-RIGHT: 0px;  
  32. MARGIN-TOP: 0px;  
  33. PADDING-LEFT: 0px;  
  34. FONT-SIZE: 8px;  
  35. MARGIN-LEFT: 0px;  
  36. CURSOR: default;  
  37. COLOR: black;  
  38. MARGIN-RIGHT: 0px;  
  39. PADDING-TOP: 0px;  
  40. FONT-FAMILY: Arial;  
  41. BACKGROUND-COLOR: transparent;  
  42. TEXT-ALIGN: center  
  43. }  
  44. .TxtInput  
  45. {  
  46. FONT-SIZE: 8pt;  
  47. WIDTH: 100%;  
  48. CURSOR: default;  
  49. COLOR: black;  
  50. FONT-FAMILY: Arial;  
  51. HEIGHT: 21px;  
  52. BACKGROUND-COLOR: white;  
  53. TEXT-ALIGN: left  
  54. }  
  55. .FieldLabel  
  56. {  
  57. FONT-WEIGHT: normal;  
  58. FONT-SIZE: 9pt;  
  59. WIDTH: 100%;  
  60. COLOR: black;  
  61. FONT-FAMILY: Arial;  
  62. BACKGROUND-COLOR: transparent;  
  63. TEXT-ALIGN: left  
  64. }  
  65. .HeadBtn  
  66. {  
  67. BORDER-RIGHT: black 1px solid;  
  68. BORDER-TOP: white 1px solid;  
  69. FONT-SIZE: 8pt;  
  70. OVERFLOW: hidden;  
  71. BORDER-LEFT: white 1px solid;  
  72. WIDTH: 70px;  
  73. COLOR: black;  
  74. BORDER-BOTTOM: black 1px solid;  
  75. FONT-FAMILY: Arial;  
  76. HEIGHT: 21px;  
  77. BACKGROUND-COLOR: #8e8dcd;  
  78. TEXT-ALIGN: center  
  79. }  
  80. .TransEx  
  81. {  
  82. BORDER-RIGHT: black 1px solid;  
  83. PADDING-RIGHT: 8px;  
  84. BORDER-TOP: white 1px solid;  
  85. PADDING-LEFT: 8px;  
  86. FONT-SIZE: 8pt;  
  87. PADDING-BOTTOM: 3px;  
  88. BORDER-LEFT: white 1px solid;  
  89. WIDTH: 720px;  
  90. PADDING-TOP: 3px;  
  91. BORDER-BOTTOM: black 1px solid;  
  92. FONT-FAMILY: Arial;  
  93. BACKGROUND-COLOR: #c0c0c0;  
  94. TEXT-ALIGN: center  
  95. }  
  96. -->  
  97. </style>  
  98. <script language="javascript">  
  99. function window.onload()  
  100. {  
  101. document.forms[0].btnOk.onclick=btn_ok;  
  102. }  
  103. function btn_ok()  
  104. {  
  105. for(var i=1;i<=8;i++)  
  106. {  
  107. if(eval("document.forms[0].afile"+i+".value!=''"))  
  108. document.forms[0].submit();  
  109. return true;  
  110. }  
  111. alert("None of file have been selected");  
  112. return false;  
  113. }  
  114. </script>  
  115. </head>  
  116. <body>  
  117. <form method="post" action="multi_upload.php" name="frmUpload" enctype="multipart/form-data" >  
  118. <table id="divContainer" style="HEIGHT: 100%; WIDTH: 380" border="0">  
  119. <tr height="35"><td align="right" valign="bottom">多文件上传 </td></tr>  
  120. <tr><td align="center" valign="top">  
  121. <table class="Transex" border="0" cellspacing="0" cellpadding="0" style="WIDTH: 360px">  
  122. <tr style="HEIGHT: 10px" >  
  123. <td style="WIDTH: 5px"></td>  
  124. <td colspan="2"></td>   
  125. <td style="WIDTH: 5px"></td>  
  126. </tr>  
  127. <tr>  
  128. <td></td>  
  129. <td nowrap><label class="FieldLabel"> 文件1</label></td>  
  130. <td><input type="file" class="TxtInput" tabindex="1" name="afile1" style="WIDTH: 282px"></td>  
  131. <td></td>  
  132. </tr>  
  133. <tr>  
  134. <td></td>  
  135. <td nowrap><label class="FieldLabel"> 文件2</label></td>  
  136. <td><input type="file" class="TxtInput" tabindex="2" name="afile2" style="WIDTH: 282px"></td>  
  137. <td></td>  
  138. </tr>  
  139. <tr>  
  140. <td></td>  
  141. <td nowrap><label class="FieldLabel"> 文件3</label></td>  
  142. <td><input type="file" class="TxtInput" tabindex="3" name="afile3" style="WIDTH: 282px"></td>  
  143. <td></td>  
  144. </tr>  
  145. <tr>  
  146. <td></td>  
  147. <td nowrap><label class="FieldLabel"> 文件4</label></td>  
  148. <td><input type="file" class="TxtInput" tabindex="4" name="afile4" style="WIDTH: 282px"></td>  
  149. <td></td>  
  150. </tr>  
  151. <tr>  
  152. <td></td>  
  153. <td nowrap><label class="FieldLabel"> 文件5</label></td>  
  154. <td><input type="file" class="TxtInput" tabindex="5" name="afile5" style="WIDTH: 282px"></td>  
  155. <td></td>  
  156. </tr>  
  157. <tr>  
  158. <td></td>  
  159. <td nowrap><label class="FieldLabel"> 文件6</label></td>  
  160. <td><input type="file" class="TxtInput" tabindex="6" name="afile6" style="WIDTH: 282px"></td>  
  161. <td></td>  
  162. </tr>  
  163. <tr>  
  164. <td></td>  
  165. <td nowrap><label class="FieldLabel"> 文件7</label></td>  
  166. <td><input type="file" class="TxtInput" tabindex="7" name="afile7" style="WIDTH: 282px"></td>  
  167. <td></td>  
  168. </tr>  
  169. <tr>  
  170. <td></td>  
  171. <td nowrap><label class="FieldLabel"> 文件8</label></td>  
  172. <td><input type="file" class="TxtInput" tabindex="8" name="afile8" style="WIDTH: 282px"></td>  
  173. <td></td>  
  174. </tr>  
  175. <tr style="HEIGHT: 5px">  
  176. <td style="WIDTH: 5px">  
  177. <td style="WIDTH: 350px" colspan="2"><hr width="100%"></td>   
  178. <td style="WIDTH: 5px"></td>  
  179. </tr>  
  180. <tr>  
  181. <td></td>  
  182. <td colspan="2" align="left">  
  183. <button tabindex="5" class="headbtn" align="center" name="btnOk" id="btnOk" accesskey="O">确定(<ins>O</ins>)</button>  
  184. <input type="hidden" name="ifupload" value=1>  
  185. <button tabindex="5" class="headbtn" align="center" name="btnCancel" id="btnCancel" accesskey="C" onclick="window.close();">取消(<ins>C</ins>)</button></td>   
  186. <td></td>  
  187. </tr>  
  188. <tr style="HEIGHT: 5px">  
  189. <td style="WIDTH: 5px">  
  190. <td style="WIDTH: 350px" colspan="2"></td>   
  191. <td style="WIDTH: 5px"></td>  
  192. </tr>  
  193. </table>  
  194. </td>  
  195. </tr>  
  196. </table>  
  197. </form>  
  198. </body>  
  199. </html> 

如果我们要动态不确定性的多文件上传怎么实现下面也有实例

文件上传代码

  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.w3.org/1999/xhtml">   
  3. <head>   
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />   
  5. <title>文档上传</title>   
  6. </head>   
  7. <body>   
  8. <script language="javascript"><!--   
  9. 动态添加文件选择控件-->   
  10. function AddRow()   
  11. {   
  12. var eNewRow = tblData.insertRow();   
  13. for (var i=0;i<1;i++)   
  14. {   
  15. var eNewCell = eNewRow.insertCell();   
  16. eNewCell.innerHTML = "<tr><td><input type='file' name='filelist[]' size='50'/></td></tr>";   
  17. }   
  18. }   
  19. // --></script>   
  20. <form name="myform" method="post" action="uploadfile.php" enctype="multipart/form-data" >   
  21. <table id="tblData" width="400" border="0">   
  22. <!-- 将上传文件必须用post的方法和enctype="multipart/form-data" -->   
  23. <!-- 将本页的网址传给uploadfile.php-->   
  24. <input name="postadd" type="hidden" value="<?php echo "http://".$_SERVER['HTTP_HOST'].$_SERVER["PHP_SELF"]; ?>" />   
  25. <tr><td>文件上传列表   
  26. <input type="button" name="addfile" onclick="AddRow()" value="添加列表" /></td></tr>   
  27. <!-- filelist[]必须是一个数组-->   
  28. <tr><td><input type="file" name="filelist[]" size="50" /></td></tr>   
  29. </table>   
  30. <input type="submit" name="submitfile" value="提交文件" />   
  31. </form>   
  32. </body>   
  33. </html>   
  34. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   
  35. <html xmlns="http://www.w3.org/1999/xhtml">   
  36. <head>   
  37. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />   
  38. <title>文档上传</title>   
  39. </head>   
  40. <body>   
  41. <script language="javascript"><!--   
  42. 动态添加文件选择控件-->   
  43. function AddRow()   
  44. {   
  45. var eNewRow = tblData.insertRow();   
  46. for (var i=0;i<1;i++)   
  47. {   
  48. var eNewCell = eNewRow.insertCell();   
  49. eNewCell.innerHTML = "<tr><td><input type='file' name='filelist[]' size='50'/></td></tr>";   
  50. }   
  51. }   
  52. // --></script>   
  53. <form name="myform" method="post" action="uploadfile.php" enctype="multipart/form-data" >   
  54. <table id="tblData" width="400" border="0">   
  55. <!-- 将上传文件必须用post的方法和enctype="multipart/form-data" -->   
  56. <!-- 将本页的网址传给uploadfile.php-->   
  57. <input name="postadd" type="hidden" value="<?php echo "http://".$_SERVER['HTTP_HOST'].$_SERVER["PHP_SELF"]; ?>" />   
  58. <tr><td>文件上传列表   
  59. <input type="button" name="addfile" onclick="AddRow()" value="添加列表" /></td></tr>   
  60. <!-- filelist[]必须是一个数组-->   
  61. <tr><td><input type="file" name="filelist[]" size="50" /></td></tr>   
  62. </table>   
  63. <input type="submit" name="submitfile" value="提交文件" />   
  64. </form>   
  65. </body>   
  66. </html>   
  67. 提交文件代码   
  68. view plaincopy to clipboardprint?   
  69. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   
  70. <html xmlns="http://www.w3.org/1999/xhtml">   
  71. <head>   
  72. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />   
  73. <title>文件上传结果</title>   
  74. </head>   
  75. <body>   
  76. <?php   
  77. if ($_POST["submitfile"]!="")   
  78. {   
  79. $Path="./".date('Ym')."/";   
  80. if (!is_dir($Path))//创建路径   
  81. mkdir($Path); }   
  82. echo "<div>";   
  83. for ($i=0;$i<count($filelist);$i++)   
  84. //$_FILES["filelist"]["size"][$i]的排列顺序不可以变,因为fileist是一个二维数组   
  85. if ($_FILES["filelist"]["size"][$i]!=0)   
  86. {   
  87. $File=$Path.date('Ymdhm')."_".$_FILES["filelist"]["name"][$i];   
  88. if (move_uploaded_file($_FILES["filelist"]["tmp_name"][$i],$File))   
  89. echo "文件上传成功 文件类型:".$_FILES["filelist"]["type"][$i]." "."文件名:"   
  90. .$_FILES["filelist"]["name"][$i]."<br>"; }   
  91. else   
  92. echo "文件名:".$_FILES["filelist"]["name"][$i]."上传失败</br>"; }   
  93. }   
  94. }   
  95. echo "</div><br><a href="$postadd" href="$postadd">返回</a></div>";   
  96. }   
  97. ?>   
  98. </body>   
  99. </html> 

另:错误信息说明

从 PHP 4.2.0 开始,PHP 将随文件信息数组一起返回一个对应的错误代码。该代码可以在文件上传时生成的文件数组中的 error 字段中被找到,也就是 $_FILES['userfile']['error']。

UPLOAD_ERR_OK

其值为 0,没有错误发生,文件上传成功。

UPLOAD_ERR_INI_SIZE

其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。

UPLOAD_ERR_FORM_SIZE

其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。 UPLOAD_ERR_PARTIAL

其值为 3,文件只有部分被上传。

UPLOAD_ERR_NO_FILE

其值为 4,没有文件被上传。

UPLOAD_ERR_NO_TMP_DIR

其值为 6,找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。

UPLOAD_ERR_CANT_WRITE

其值为 7,文件写入失败。PHP 5.1.0 引进。

注意: 以上值在 PHP 4.3.0 之后变成了 PHP 常量。

Tags: php多文件上传 php上传

分享到: