$_FILES
是 PHP 中的一個(gè)預(yù)定義全局?jǐn)?shù)組,用于處理 HTTP 文件上傳。它可以完成以下任務(wù):
上傳文件:通過(guò) HTML 表單中的 <input type="file">
元素,用戶可以選擇一個(gè)或多個(gè)文件進(jìn)行上傳。當(dāng)表單提交時(shí),這些文件信息會(huì)被存儲(chǔ)在 $_FILES
數(shù)組中。
檢查文件信息:$_FILES
數(shù)組包含了上傳文件的詳細(xì)信息,如文件名、文件類型、文件大小、錯(cuò)誤信息等。你可以使用這些信息來(lái)驗(yàn)證文件是否符合你的需求。
處理上傳文件:根據(jù)你的需求,你可以使用 PHP 的內(nèi)置函數(shù)(如 move_uploaded_file()
)將上傳的文件移動(dòng)到服務(wù)器上的指定目錄。
文件重命名:在將上傳的文件保存到服務(wù)器之前,你可以使用 PHP 的內(nèi)置函數(shù)(如 rename()
)對(duì)文件進(jìn)行重命名,以避免文件名沖突。
文件讀取:上傳的文件可以被讀取并處理,例如使用 file_get_contents()
函數(shù)讀取文件內(nèi)容,或者使用 fopen()
、fread()
和 fclose()
函數(shù)逐行讀取文件內(nèi)容。
文件刪除:你可以使用 PHP 的內(nèi)置函數(shù)(如 unlink()
)刪除服務(wù)器上的文件。
示例:
<!-- HTML 表單 -->
<form action="upload.php" method="post" enctype="multipart/form-data">
選擇一個(gè)文件:
<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"])) . " 已經(jīng)被上傳。";
} else {
echo "抱歉,上傳文件時(shí)出現(xiàn)錯(cuò)誤。";
}
} else {
echo "文件未上傳。";
}
}