PHP中的數(shù)組是一種非常常見的數(shù)據(jù)類型。其中,files數(shù)組是專門用于存儲(chǔ)上傳的文件的一個(gè)超級(jí)全局變量。
首先,我們來看一個(gè)簡(jiǎn)單的例子。
print_r($_FILES);
當(dāng)我們?cè)谇岸吮韱沃猩蟼饕粋€(gè)文件時(shí),此時(shí)的$_FILES就是我們所需要的PHP files數(shù)組。通過上述代碼,我們可以看到輸出的內(nèi)容如下:
Array ( [file] =>Array ( [name] =>test.jpg [type] =>image/jpeg [tmp_name] =>/tmp/phpjCxcFz [error] =>0 [size] =>46337 ) )
通過以上代碼,我們可以看到files數(shù)組包含了我們上傳的文件的名字,類型,大小等信息。具體來說:
- name:表示上傳的文件的文件名
- type:表示上傳的文件的MIME類型
- tmp_name:表示上傳的文件在服務(wù)器上的臨時(shí)存儲(chǔ)位置
- error:表示上傳文件的錯(cuò)誤代碼,0表示沒有錯(cuò)誤,其他值則表示不同的錯(cuò)誤類型
- size:表示上傳的文件的大小,單位為字節(jié)
在使用files數(shù)組時(shí),我們需要特別注意以下幾點(diǎn):
- 文件上傳必須采用POST方法,而且表單必須有一個(gè)enctype="multipart/form-data"屬性。
- PHP會(huì)默認(rèn)上傳的文件名自動(dòng)轉(zhuǎn)換為UTF-8編碼,如果不是的話,需要使用iconv()函數(shù)進(jìn)行轉(zhuǎn)換。
- 由于上傳的文件在服務(wù)器上只是一個(gè)臨時(shí)文件,在進(jìn)行處理前需要重新保存到一個(gè)指定的目錄下,否則在PHP運(yùn)行結(jié)束后,這個(gè)臨時(shí)文件就會(huì)被刪除。
下面,我們來看一個(gè)具體的上傳文件的例子。
<?php $allowedExts = array("gif", "jpeg", "jpg", "png"); // 允許上傳的文件類型 $extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION); // 獲取上傳的文件后綴名 if ((($_FILES['file']['type'] == 'image/gif') || ($_FILES['file']['type'] == 'image/jpeg') || ($_FILES['file']['type'] == 'image/jpg') || ($_FILES['file']['type'] == 'image/png')) && ($_FILES['file']['size']< 2048000) // 限制文件大小為2MB && in_array($extension, $allowedExts)) { // 判斷文件后綴名是否合法 if ($_FILES['file']['error'] >0) { echo "上傳文件發(fā)生錯(cuò)誤:" . $_FILES['file']['error']; } else { echo "上傳文件名:" . $_FILES['file']['name'] . "<br>"; echo "上傳文件類型:" . $_FILES['file']['type'] . "<br>"; echo "上傳文件大小:" . ($_FILES['file']['size'] / 1024) . " kB<br>"; echo "上傳文件臨時(shí)存儲(chǔ)位置:" . $_FILES['file']['tmp_name'] . "<br>"; move_uploaded_file($_FILES['file']['tmp_name'], "upload/" . $_FILES['file']['name']); echo "文件已保存至:" . "upload/" . $_FILES['file']['name']; } } else { echo "非法的文件類型或文件大小超過限制!"; } ?>
在上述代碼中,我們首先定義了一個(gè)$allowedExts數(shù)組,用于存儲(chǔ)允許上傳的文件類型。然后通過pathinfo函數(shù)獲取到上傳的文件的后綴名,并通過if語句判斷文件類型和大小是否符合要求。如果符合,我們就可以通過move_uploaded_file函數(shù)將這個(gè)文件保存到指定的目錄下。最后,在前端界面上展示上傳文件的相關(guān)信息。
總之,files數(shù)組是一個(gè)非常有用的數(shù)據(jù)類型,尤其是在我們需要上傳文件時(shí),是必不可少的。在使用files數(shù)組時(shí),我們需要特別注意文件的類型、大小以及命名等方面對(duì)我們的PHP程序進(jìn)行合理的設(shè)置。