$_FILES
是 PHP 中的一個預定義全局數組,用于處理 HTTP 文件上傳。它可以完成以下任務:
上傳文件:通過 HTML 表單中的 <input type="file">
元素,用戶可以選擇一個或多個文件進行上傳。當表單提交時,這些文件信息會被存儲在 $_FILES
數組中。
檢查文件信息:$_FILES
數組包含了上傳文件的詳細信息,如文件名、文件類型、文件大小、錯誤信息等。你可以使用這些信息來驗證文件是否符合你的需求。
處理上傳文件:根據你的需求,你可以使用 PHP 的內置函數(如 move_uploaded_file()
)將上傳的文件移動到服務器上的指定目錄。
文件重命名:在將上傳的文件保存到服務器之前,你可以使用 PHP 的內置函數(如 rename()
)對文件進行重命名,以避免文件名沖突。
文件讀取:上傳的文件可以被讀取并處理,例如使用 file_get_contents()
函數讀取文件內容,或者使用 fopen()
、fread()
和 fclose()
函數逐行讀取文件內容。
文件刪除:你可以使用 PHP 的內置函數(如 unlink()
)刪除服務器上的文件。
示例:
<!-- HTML 表單 -->
<form action="upload.php" method="post" enctype="multipart/form-data">
選擇一個文件:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="上傳文件" name="submit">
</form>
// upload.php
if (isset($_FILES['fileToUpload'])) {
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
// 檢查文件是否為有效上傳
if (isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["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["fileToUpload"]["tmp_name"], $target_file)) {
echo "文件:" . htmlspecialchars(basename($_FILES["fileToUpload"]["name"])) . " 已經被上傳。";
} else {
echo "抱歉,上傳文件時出現錯誤。";
}
} else {
echo "文件未上傳。";
}
}