PHP多文件上傳我的理解總結php
php函數 2009-08-03 21:37 閱讀26 評論0 字號: 大大 中中 小小 數組
多文件上傳是PHP中一基礎應用,在此把相關知識向你們詳細介紹一下,本人水平有限,還請多提意見。你們一塊兒進步。
上傳文件HTML的輸入標籤FILE類型中的名稱後要加[],做用是在HTML中向PHP創建數組,好比名稱爲pictures,多文件引用名稱則爲pictures[],實例以下:
代碼:
<form action="upload.php" method="post" enctype="multipart/form-data">
<p>
<input type="file" name="pictures[]" /><br />
<input type="file" name="pictures[]" /><br />
<input type="file" name="pictures[]" /><br />
<input type="submit" value="上傳" />
</p>
</form> //手冊中實例。
利用HTML文件創建數組的方法手冊中是這樣講解的:瀏覽器
要使你的 <form> 結果被當成 array 發送到 PHP 腳本,要對 <input>,<select> 或者 <textarea> 單元這樣命名:
<input name="MyArray[]" />
<input name="MyArray[]" />
<input name="MyArray[]" />
<input name="MyArray[]" />
注意變量名後的方括號,這使其成爲一個數組。併發
能夠經過給不一樣的單元分配相同的名字來把單元分組到不一樣的數組裏:
<input name="MyArray[]" />
<input name="MyArray[]" />
<input name="MyOtherArray[]" />
<input name="MyOtherArray[]" />
這將產生兩個數組,MyArray 和 MyOtherArray,併發送給 PHP 腳本。app
還能夠給數組分配指定的鍵名:
<input name="AnotherArray[]" />
<input name="AnotherArray[]" />
<input name="AnotherArray[email]" />
<input name="AnotherArray[phone]" />
AnotherArray 數組將包含鍵名 0,1,email 和 phone。 函數
注意: 指定數組的鍵名是 HTML 的可選項。若是不指定鍵名,則數組被按照單元在表單中出現的順序填充。第一個例子將包含鍵名 0,1,2,3。post
以上HTML點擊上傳後,經過$_FILES超級全局變量進行讀取,$_FILES將會把HTTP POST 方法傳遞上來的文件信息組合成數組,一個文件數組形式爲二維。二個以上文件數組形式爲三維。orm
$_FILES的使用方法:
$_FILES['userfile']['name']
客戶端機器文件的原名稱。
$_FILES['userfile']['type'] 文件的 MIME 類型,若是瀏覽器提供此信息的話。一個例子是「image/gif」。不過此 MIME 類型在 PHP 端並不檢查,所以不要想固然認爲有這個值。
$_FILES['userfile']['size'] 已上傳文件的大小,單位爲字節。
$_FILES['userfile']['tmp_name'] 文件被上傳後在服務端儲存的臨時文件名。
$_FILES['userfile']['error'] ip
下面是一個文件上傳,此文件上傳後$_FILES數組內將會產生其信息,由於是一個文件因此是二維的,爲了便於你們理解咱們將$_FILES用PRINT_R輸出查看其結構。input
HTML文件:
代碼:
<form action="upload.php" method="post" enctype="multipart/form-data">
<p>
<input type="file" name="pictures" /><br />
<input type="submit" value="上傳" />
</p>
</form>
PHP接收文件:
代碼:
<?php
print_r($_FILES);
?>
將其令存爲UPLOAD.PHP,運行上面的HTML選擇一個文件上傳,好比文件名爲Thumbs.db,在IE瀏覽器內單擊「查看」,「源代碼」。顯示以下:
Array
(
[pictures] => Array
(
[name] => Thumbs.db //原文件名
[type] => application/octet-stream //文件類型
[tmp_name] => D:\EasyPHP\\tmp\php64.tmp //臨時存儲目錄及文件名
[error] => 0 //錯誤代碼 0爲上傳成功
[size] => 23040 //文件大小
)
)根據此信息,結合上面$_FILES的使用方法,你們應該能理解的更深入一些。
下面看一下多文件上傳,三個文件名分別爲FILE1.TXT,FILE2.TXT,FILE3.TXT,而後用PRINT_R輸出查看其結構:
HTML文件代碼:
代碼:
<form action="upload.php" method="post" enctype="multipart/form-data">
<p>
<input type="file" name="pictures[]" /><br />
<input type="file" name="pictures[]" /><br />
<input type="file" name="pictures[]" /><br />
<input type="submit" value="上傳" />
</p>
</form>
PHP接收文件代碼:
<?php
print_r($_FILES);
?>
查看源文件:
Array ( [pictures] => Array ( [name] => Array ( [0] => file1.txt [1] => file2.txt [2] => file3.txt ) [type] => Array ( [0] => application/octet-stream [1] => application/octet-stream [2] => application/octet-stream ) [tmp_name] => Array ( [0] => D:\EasyPHP\\tmp\php47.tmp [1] => D:\EasyPHP\\tmp\php48.tmp [2] => D:\EasyPHP\\tmp\php49.tmp ) [error] => Array ( [0] => 0 [1] => 0 [2] => 0 ) [size] => Array ( [0] => 94289 [1] => 65536 [2] => 102400 ) ) ) 假設名爲 /file1.txt 和 /file2.txt 的文件被提交,則 $_FILES['pictures']['name'][0] 的值將是 file1.txt,而 $_FILES['pictures']['name'][1] 的值將是 file2.txt。相似的,$_FILES['file2.txt']['size'][0] 將包含文件 file1.txt 的大小,依此類推