$_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 "文件未上传。";
}
}