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");
}
}
?>
下面分享其它朋友的例子
例1
<?
//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>
<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>
如果我們要動態不確定性的多文件上傳怎麼實現下面也有實例
文件上傳代碼
代碼如下 復制代碼 view plaincopy to clipboardprint?另:錯誤信息說明
從 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 常量。