温馨提示×

php $_files能完成什么任务

PHP
小樊
81
2024-11-20 18:27:00
栏目: 编程语言

$_FILES 是 PHP 中的一个预定义全局数组,用于处理 HTTP 文件上传。它可以完成以下任务:

  1. 上传文件:通过 HTML 表单中的 <input type="file"> 元素,用户可以选择一个或多个文件进行上传。当表单提交时,这些文件信息会被存储在 $_FILES 数组中。

  2. 检查文件信息:$_FILES 数组包含了上传文件的详细信息,如文件名、文件类型、文件大小、错误信息等。你可以使用这些信息来验证文件是否符合你的需求。

  3. 处理上传文件:根据你的需求,你可以使用 PHP 的内置函数(如 move_uploaded_file())将上传的文件移动到服务器上的指定目录。

  4. 文件重命名:在将上传的文件保存到服务器之前,你可以使用 PHP 的内置函数(如 rename())对文件进行重命名,以避免文件名冲突。

  5. 文件读取:上传的文件可以被读取并处理,例如使用 file_get_contents() 函数读取文件内容,或者使用 fopen()fread()fclose() 函数逐行读取文件内容。

  6. 文件删除:你可以使用 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 "文件未上传。";
    }
}

0