自己寫的一段多文件上傳代碼,已測(cè)試可用。
要使用PHP實(shí)現(xiàn)文件上傳功能,我們先來編寫兩個(gè)php文件:test.html
和upfiles.php
。
其中,test.html頁面用于提交文件上傳的表單請(qǐng)求,upfiles.php
頁面用于接收上傳的文件并進(jìn)行相應(yīng)處理。
示例一中加入了判斷上傳的文件是否是文本文件的語句?!炯酉拗剖菫榱嗽黾影踩浴?/span>
如果要上傳任意類型文件,去掉紅色代碼部分。
upfiles.php代碼:
示例一:
<?php
//多文件上傳
header('Content-Type:text/html;charset=utf-8');
$file_Arr = $_FILES['userfile'];//上傳文件的相關(guān)信息存放在超全局變量$_FILES中。因此,我們只需要通過$_FILES數(shù)組獲取上傳的文件信息,然后對(duì)其進(jìn)行相應(yīng)的處理操作即可。
$upfile = 'D:/upload/'; //上傳文件的存放路徑
foreach($file_Arr['error'] as $key => $error)
{
if($error == UPLOAD_ERR_OK )
{
if($file_Arr['type'][$key] != 'text/plain'){
echo "上傳的文件不是文本文件";
exit;
}
else{
$tmp_name=$file_Arr['tmp_name'][$key]; //提交表單以后,文件上傳到服務(wù)器,暫時(shí)存放在服務(wù)器的臨時(shí)目錄里邊。即:文件在服務(wù)器上的臨時(shí)目錄。
//注意:文件存放在臨時(shí)目錄時(shí),文件名是不是它本身真實(shí)的文件名,而是系統(tǒng)自動(dòng)給文件分配的一個(gè)文件名。
$name=$file_Arr['name'][$key]; //上傳文件的文件名
$name=iconv("utf-8","GBK",$name);//解決上傳中文文件時(shí)亂碼問題
move_uploaded_file($tmp_name,$upfile.$name);//移動(dòng)服務(wù)器臨時(shí)目錄中的文件到存放上傳文件的目錄,并重命名為真實(shí)名稱。
echo '上傳[文件'.$key.']成功!<br/>';
}
}
}
?>
示例二:
以下代碼是使用for循環(huán)實(shí)現(xiàn)文件按上傳,功能和上邊一樣(任選一個(gè)):
<?php
//用for循環(huán)來獲取傳遞的數(shù)據(jù),是一個(gè)三維數(shù)據(jù)
for ($i=0;$i<count($_FILES['userfile']['tmp_name']);$i++)
{
$upfile="D:/upload/".$_FILES['userfile']['name'][$i];//此處可以根據(jù)自己的需要修改
if(move_uploaded_file($_FILES['userfile']['tmp_name'][$i],$upfile)){
echo "第".($i+1)."張圖片上傳成功<br>";
}
else{
echo "第".($i+1)."張圖片上傳不了<br>";
}
}
?>
test.html
Html代碼(放入到test.html中):
<body>
<h2>多個(gè)文件上傳</h2>
<form action="upfiles.php" method="post" enctype="multipart/form-data">
<p>Files:
<input type="file" name="userfile[]" /><br />
<input type="file" name="userfile[]" /><br />
<input type="file" name="userfile[]" /><br />
<input type="submit" value="Upload" />
</p>
</form>
</body>
值得注意的是,由于在HTTP協(xié)議設(shè)計(jì)之初,它并不支持文件上傳功能,form
表單的encrypt
屬性的默認(rèn)值為application/x-www-form-urlencoded
,
它只能用于提交一般的表單請(qǐng)求。如果提交的表單中包含需要上傳的文件,我們需要將enctype
的屬性值改為multipart/form-data
才能實(shí)現(xiàn)文件上傳功能。
此外,method
的屬性值必須為post
。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。