$_FILES是PHP中一個全局變量,它用于從上傳的文件中獲取信息。上傳文件是Web開發中非常常見的一個功能,很多網站都需要用戶上傳文件,如頭像、音樂、電影等等。使用$_FILES可以方便地獲取上傳文件的信息,以下是對$_FILES的詳細解釋:
$_FILES的結構如下:
array( "fieldname" =>array( "name" =>"filename.txt", "type" =>"text/plain", "size" =>1234, "tmp_name" =>"/tmp/php/php6hst32", "error" =>0 ) )
fieldname:是文件表單項的名稱
name:是上傳文件的原始文件名
type:是上傳文件的MIME類型
size:是上傳文件的大小,單位是字節
tmp_name:是上傳文件在服務器的臨時文件名
error:是上傳文件的錯誤碼,為0表示上傳成功
舉個例子,如果我們有一個表單項,要求用戶上傳一張名為“avatar.png”的頭像文件,可以這樣寫:
<form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="avatar"> <input type="submit" value="上傳"> </form>
在上傳文件的PHP文件upload.php里,可以這樣獲取到上傳文件的信息:
$avatar = $_FILES["avatar"]; echo "上傳文件名:" . $avatar["name"] . "<br>"; echo "上傳文件類型:" . $avatar["type"] . "<br>"; echo "上傳文件大?。? . $avatar["size"] . "字節<br>"; echo "上傳文件臨時文件名:" . $avatar["tmp_name"] . "<br>"; echo "上傳文件錯誤碼:" . $avatar["error"] . "<br>";
除了獲取上傳文件的信息外,$_FILES還可以用于將上傳文件移動到指定目錄。例如,我們需要將用戶上傳的頭像文件保存到一個固定的目錄下:
$avatar = $_FILES["avatar"]; $target_dir = "uploads/"; $target_file = $target_dir . basename($avatar["name"]); move_uploaded_file($avatar["tmp_name"], $target_file); echo "上傳成功!";
上述代碼中,move_uploaded_file()函數會將上傳文件從臨時目錄移動到指定目錄,并且返回布爾值,表示是否移動成功。
除了上述操作外,還有一些常用的處理方式:
1.判斷上傳文件是否為所需文件類型
$avatar = $_FILES["avatar"]; $allowed_types = array("image/png", "image/jpeg"); if (in_array($avatar["type"], $allowed_types)) { // 符合要求 } else { // 不符合要求 }
2.生成隨機文件名以避免文件名沖突
$avatar = $_FILES["avatar"]; $target_dir = "uploads/"; $target_file = $target_dir . uniqid() . '.' . pathinfo($avatar["name"], PATHINFO_EXTENSION); move_uploaded_file($avatar["tmp_name"], $target_file); echo "上傳成功!";
3.限制上傳文件大小
$avatar = $_FILES["avatar"]; $max_size = 1024 * 1024; // 1MB if ($avatar["size"] >$max_size) { // 文件超過大小限制 } else { // 文件符合大小限制 }
總之,使用$_FILES能夠輕松地實現文件上傳和相關操作,為Web開發提供了很大的便利。