$_FILES
是 PHP 中的一個預定義全局數組,用于處理 HTTP 文件上傳。當用戶通過表單提交一個文件時,$_FILES
數組會自動收集有關該文件的信息。這些信息包括文件的原始文件名、文件類型、文件大小以及臨時文件路徑等。使用 $_FILES
,您可以處理用戶上傳的文件,例如將其保存到服務器上的某個位置或將它們移動到其他目錄。
以下是 $_FILES
數組的一些常見元素:
$_FILES['filename']['name']
:上傳文件的原始文件名。$_FILES['filename']['type']
:上傳文件的 MIME 類型。$_FILES['filename']['size']
:上傳文件的大小(以字節為單位)。$_FILES['filename']['error']
:文件上傳過程中的錯誤代碼。通常,0 表示沒有錯誤,1 表示上傳文件太大,2 表示文件上傳被中斷,4 表示沒有找到上傳文件。$_FILES['filename']['tmp_name']
:上傳文件在服務器上的臨時存儲路徑。以下是一個簡單的示例,展示了如何使用 $_FILES
數組處理文件上傳:
<!DOCTYPE html>
<html>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
選擇要上傳的文件:
<input type="file" name="filename">
<input type="submit" value="上傳">
</form>
</body>
</html>
接下來,創建一個名為 upload.php
的 PHP 文件來處理文件上傳:
<?php
if ($_FILES["filename"]["error"] > 0) {
echo "錯誤:" . $_FILES["filename"]["error"] . "<br>";
} else {
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["filename"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
// 檢查文件是否為有效上傳
if (isset($_POST["submit"])) {
$check = getimagesize($_FILES["filename"]["tmp_name"]);
if ($check !== false) {
echo "文件是一張圖片 - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "文件不是一張圖片。";
$uploadOk = 0;
}
}
// 檢查上傳文件夾是否存在
if (!file_exists($target_dir)) {
mkdir($target_dir, 0777, true);
}
// 嘗試上傳文件
if ($uploadOk == 1) {
if (move_uploaded_file($_FILES["filename"]["tmp_name"], $target_file)) {
echo "文件:" . htmlspecialchars(basename($_FILES["filename"]["name"])) . " 已經上傳成功。";
} else {
echo "抱歉,文件上傳失敗。";
}
}
}
?>
在這個示例中,我們首先檢查上傳過程中是否有錯誤。如果沒有錯誤,我們將檢查上傳的文件是否為圖片,然后將其移動到服務器上的 “uploads” 文件夾中。如果上傳成功,我們會顯示一條消息,否則會顯示一條錯誤消息。