好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

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

最简单的实例如下,代码如下:

<form action= ""  method= "post"  enctype= "multipart/form-data" >  <p>Pictures:  <input type= "file"  name= "pictures[]"  />  <input type= "file"  name= "pictures[]"  />  <input type= "file"  name= "pictures[]"  />  <input type= "submit"  value= "Send"  />  </p>  </form>           <?php  foreach  ( $_FILES [ "pictures" ][ "error" ]  as   $key  =>  $error ) {           if  ( $error  == UPLOAD_ERR_OK) {               $tmp_name  =  $_FILES [ "pictures" ][ "tmp_name" ][ $key ];               $name  =  $_FILES [ "pictures" ][ "name" ][ $key ];              move_uploaded_file( $tmp_name ,  "data/$name" );          }  }  ?> 

下面分享其它朋友的例子,代码如下:

<?php  //filename:multi_upload.php   if ( $ifupload )  {  $path = AddSlashes (dirname( $PATH_TRANSLATED )). "\upload\" ;  for ( $i =1; $i <=8; $i ++)  {  $files = "afile" . $i ;  if (${ $files }!= "none" )  {  if ( copy (${ $files }, $path .${ $files . "_name" }))  {  }  }  }  print  "<b>You have uploaded files successfully</b><br>" ;  print  "<a href=" multi_upload.php ">Return</a>" ;  exit ;  }  ?>  <html>  <html>  <head>  <meta http-equiv= "Content-Type"  content= "text/html; charset=gb2312" >  <meta NAME= "GENERATOR"  Content= "Microsoft Visual Studio 6.0" >  <title>多个文件上传</title>  <style type= "text/css" >  <!--  BODY  {  PADDING-RIGHT: 0px;  MARGIN-TOP: 0px;  PADDING-LEFT: 0px;  FONT-SIZE: 8px;  MARGIN-LEFT: 0px;  CURSOR:  default ;  COLOR: black;  MARGIN-RIGHT: 0px;  PADDING-TOP: 0px;  FONT-FAMILY: Arial;  BACKGROUND-COLOR: transparent;  TEXT-ALIGN: center  }  .TxtInput  {  FONT-SIZE: 8pt;  WIDTH: 100%;  CURSOR:  default ;  COLOR: black;  FONT-FAMILY: Arial;  HEIGHT: 21px;  BACKGROUND-COLOR: white;  TEXT-ALIGN: left  }  .FieldLabel  {  FONT-WEIGHT: normal;  FONT-SIZE: 9pt;  WIDTH: 100%;  COLOR: black;  FONT-FAMILY: Arial;  BACKGROUND-COLOR: transparent;  TEXT-ALIGN: left  }  .HeadBtn  {  BORDER-RIGHT: black 1px solid;  BORDER-TOP: white 1px solid;  FONT-SIZE: 8pt;  OVERFLOW: hidden;  BORDER-LEFT: white 1px solid;  WIDTH: 70px;  COLOR: black;  BORDER-BOTTOM: black 1px solid;  FONT-FAMILY: Arial;  HEIGHT: 21px;  BACKGROUND-COLOR: #8e8dcd;  TEXT-ALIGN: center  }  .TransEx  {  BORDER-RIGHT: black 1px solid;  PADDING-RIGHT: 8px;  BORDER-TOP: white 1px solid;  PADDING-LEFT: 8px;  FONT-SIZE: 8pt;  PADDING-BOTTOM: 3px;  BORDER-LEFT: white 1px solid;  WIDTH: 720px;  PADDING-TOP: 3px;  BORDER-BOTTOM: black 1px solid;  FONT-FAMILY: Arial;  BACKGROUND-COLOR: #c0c0c0;  TEXT-ALIGN: center  }  -->  </style>  <script language= "javascript" >  function  window.onload()  {  document.forms[0].btnOk.onclick=btn_ok;  }  function  btn_ok()  {  for ( var  i=1;i<=8;i++)  {  if ( eval ( "document.forms[0].afile" +i+ ".value!=''" ))  document.forms[0].submit();  return  true;  }  alert( "None of file have been selected" );  return  false;  }  </script>  </head>  <body>  <form method= "post"  action= "multi_upload.php"  name= "frmUpload"  enctype= "multipart/form-data"  >  <table id= "divContainer"  style= "HEIGHT: 100%; WIDTH: 380"  border= "0" >  <tr height= "35" ><td align= "right"  valign= "bottom" >多文件上传 </td></tr>  <tr><td align= "center"  valign= "top" >  <table  class = "Transex"  border= "0"  cellspacing= "0"  cellpadding= "0"  style= "WIDTH: 360px" >  <tr style= "HEIGHT: 10px"  >  <td style= "WIDTH: 5px" ></td>  <td colspan= "2" ></td>   <td style= "WIDTH: 5px" ></td>  </tr>  <tr>  <td></td>  <td nowrap><label  class = "FieldLabel" > 文件1</label></td>  <td><input type= "file"   class = "TxtInput"  tabindex= "1"  name= "afile1"  style= "WIDTH: 282px" ></td>  <td></td>  </tr>  <tr>  <td></td>  <td nowrap><label  class = "FieldLabel" > 文件2</label></td>  <td><input type= "file"   class = "TxtInput"  tabindex= "2"  name= "afile2"  style= "WIDTH: 282px" ></td>  <td></td>  </tr>  <tr>  <td></td>  <td nowrap><label  class = "FieldLabel" > 文件3</label></td>  <td><input type= "file"   class = "TxtInput"  tabindex= "3"  name= "afile3"  style= "WIDTH: 282px" ></td>  <td></td>  </tr>  <tr>  <td></td>  <td nowrap><label  class = "FieldLabel" > 文件4</label></td>  <td><input type= "file"   class = "TxtInput"  tabindex= "4"  name= "afile4"  style= "WIDTH: 282px" ></td>  <td></td>  </tr>  <tr>  <td></td>  <td nowrap><label  class = "FieldLabel" > 文件5</label></td>  <td><input type= "file"   class = "TxtInput"  tabindex= "5"  name= "afile5"  style= "WIDTH: 282px" ></td>  <td></td>  </tr>  <tr>  <td></td>  <td nowrap><label  class = "FieldLabel" > 文件6</label></td>  <td><input type= "file"   class = "TxtInput"  tabindex= "6"  name= "afile6"  style= "WIDTH: 282px" ></td>  <td></td>  </tr>  <tr>  <td></td>  <td nowrap><label  class = "FieldLabel" > 文件7</label></td>  <td><input type= "file"   class = "TxtInput"  tabindex= "7"  name= "afile7"  style= "WIDTH: 282px" ></td>  <td></td>  </tr>  <tr>  <td></td>  <td nowrap><label  class = "FieldLabel" > 文件8</label></td>  <td><input type= "file"   class = "TxtInput"  tabindex= "8"  name= "afile8"  style= "WIDTH: 282px" ></td> //开源代码phpfensi.com   <td></td>  </tr>  <tr style= "HEIGHT: 5px" >  <td style= "WIDTH: 5px" >  <td style= "WIDTH: 350px"  colspan= "2" ><hr width= "100%" ></td>   <td style= "WIDTH: 5px" ></td>  </tr>  <tr>  <td></td>  <td colspan= "2"  align= "left" >  <button tabindex= "5"   class = "headbtn"  align= "center"  name= "btnOk"  id= "btnOk"  accesskey= "O" >确定(<ins>O</ins>)</button>  <input type= "hidden"  name= "ifupload"  value=1>  <button tabindex= "5"   class = "headbtn"  align= "center"  name= "btnCancel"  id= "btnCancel"  accesskey= "C"  onclick= "window.close();" >取消(<ins>C</ins>)</button></td>   <td></td>  </tr>  <tr style= "HEIGHT: 5px" >  <td style= "WIDTH: 5px" >  <td style= "WIDTH: 350px"  colspan= "2" ></td>   <td style= "WIDTH: 5px" ></td>  </tr>  </table>  </td>  </tr>  </table>  </form>  </body>  </html> 

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

<!DOCTYPE html PUBLIC  "-//W3C//DTD XHTML 1.0 Transitional//EN"   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >   <html xmlns= "http://www.w3.org/1999/xhtml" >   <head>   <meta http-equiv= "Content-Type"  content= "text/html; charset=gb2312"  />   <title>文档上传</title>   </head>   <body>   <script language= "javascript" ><!--   动态添加文件选择控件-->   function  AddRow()   {   var  eNewRow = tblData.insertRow();   for  ( var  i=0;i<1;i++)   {   var  eNewCell = eNewRow.insertCell();   eNewCell.innerHTML =  "<tr><td><input type='file' name='filelist[]' size='50'/></td></tr>" ;   }   }   // --></script>    <form name= "myform"  method= "post"  action= "uploadfile.php"  enctype= "multipart/form-data"  >   <table id= "tblData"  width= "400"  border= "0" >   <!-- 将上传文件必须用post的方法和enctype= "multipart/form-data"  -->   <!-- 将本页的网址传给uploadfile.php-->   <input name= "postadd"  type= "hidden"  value= "<?php echo " http: //".$_SERVER['HTTP_HOST'].$_SERVER["PHP_SELF"]; ?>" />    <tr><td>文件上传列表   <input type= "button"  name= "addfile"  onclick= "AddRow()"  value= "添加列表"  /></td></tr>   <!-- filelist[]必须是一个数组-->   <tr><td><input type= "file"  name= "filelist[]"  size= "50"  /></td></tr>   </table>   <input type= "submit"  name= "submitfile"  value= "提交文件"  />   </form>   </body>   </html>   <!DOCTYPE html PUBLIC  "-//W3C//DTD XHTML 1.0 Transitional//EN"   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >   <html xmlns= "http://www.w3.org/1999/xhtml" >   <head>   <meta http-equiv= "Content-Type"  content= "text/html; charset=gb2312"  />   <title>文档上传</title>   </head>   <body>   <script language= "javascript" ><!--   动态添加文件选择控件-->   function  AddRow()   {   var  eNewRow = tblData.insertRow();   for  ( var  i=0;i<1;i++)   {   var  eNewCell = eNewRow.insertCell();   eNewCell.innerHTML =  "<tr><td><input type='file' name='filelist[]' size='50'/></td></tr>" ;   }   }   // --></script>    <form name= "myform"  method= "post"  action= "uploadfile.php"  enctype= "multipart/form-data"  >   <table id= "tblData"  width= "400"  border= "0" >   <!-- 将上传文件必须用post的方法和enctype= "multipart/form-data"  -->   <!-- 将本页的网址传给uploadfile.php-->   <input name= "postadd"  type= "hidden"  value= "<?php echo " http: //".$_SERVER['HTTP_HOST'].$_SERVER["PHP_SELF"]; ?>" />    <tr><td>文件上传列表   <input type= "button"  name= "addfile"  onclick= "AddRow()"  value= "添加列表"  /></td></tr>   <!-- filelist[]必须是一个数组-->   <tr><td><input type= "file"  name= "filelist[]"  size= "50"  /></td></tr>   </table>   <input type= "submit"  name= "submitfile"  value= "提交文件"  />   </form>  </body>  </html> 

提交文件代码:

<!DOCTYPE html PUBLIC  "-//W3C//DTD XHTML 1.0 Transitional//EN"   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >   <html xmlns= "http://www.w3.org/1999/xhtml" >   <head>   <meta http-equiv= "Content-Type"  content= "text/html; charset=gb2312"  />   <title>文件上传结果</title>   </head>   <body>   <?php   if  ( $_POST [ "submitfile" ]!= "" )   {   $Path = "./" . date ( 'Ym' ). "/" ;   if  (! is_dir ( $Path )) //创建路径    {  mkdir ( $Path ); }   echo   "<div>" ;   for  ( $i =0; $i < count ( $filelist ); $i ++)   {  //$_FILES["filelist"]["size"][$i]的排列顺序不可以变,因为fileist是一个二维数组    if  ( $_FILES [ "filelist" ][ "size" ][ $i ]!=0)   {   $File = $Path . date ( 'Ymdhm' ). "_" . $_FILES [ "filelist" ][ "name" ][ $i ];   if  (move_uploaded_file( $_FILES [ "filelist" ][ "tmp_name" ][ $i ], $File ))   {  echo   "文件上传成功 文件类型:" . $_FILES [ "filelist" ][ "type" ][ $i ]. " " . "文件名:"    . $_FILES [ "filelist" ][ "name" ][ $i ]. "<br>" ; }   else    {  echo   "文件名:" . $_FILES [ "filelist" ][ "name" ][ $i ]. "上传失败</br>" ; }   }   }   echo   "</div><br><a href=" $postadd " href=" $postadd ">返回</a></div>" ;   }   ?>   </body>   </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 常量.

查看更多关于php 实现多文件上传程序代码 - php上传下载的详细内容...

  阅读:58次