首页 >后端开发 >php教程 >为什么在 PHP 中上传文件时出现'未定义的变量:HTTP_POST_FILES”错误?

为什么在 PHP 中上传文件时出现'未定义的变量:HTTP_POST_FILES”错误?

Patricia Arquette
Patricia Arquette原创
2024-12-10 01:57:09380浏览

Why Am I Getting the

使用 PHP 上传文件:排除“未定义变量:HTTP_POST_FILES”错误

使用 PHP 将文件上传到服务器可以是一个简单的过程。但是,必须解决在此过程中可能出现的任何错误。

问题:
尝试使用 PHP 上传文件时发生错误:“注意:未定义的变量: HTTP_POST_FILES”。

原因:
$HTTP_POST_FILES变量指的是存储上传文件信息的全局数组。然而,它自 PHP 4.1.0 起已被弃用,不建议使用。

解决方案:
现代 PHP 版本期望使用不同的结构来访问上传的文件数据。使用以下方法代替 $HTTP_POST_FILES:

$_FILES["file_name"]["key"]

其中:

  • file_name 是选择文件的输入字段的名称。
  • key 是正在访问的文件的特定方面(例如,“名称”、“类型”、“大小”、 "tmp_name")。

示例代码:

以下改进的 PHP 代码遵循文件上传的最佳实践:

$target_dir = "upload/";
$target_file = $target_dir . basename($_FILES["filename"]["name"]);
$imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
$allowedTypes = ['jpg', 'png'];

if (isset($_POST["submit"])) {
    // Check file type
    if (!in_array($imageFileType, $allowedTypes)) {
        echo "Type is not allowed";
    }
    // Check if file already exists
    elseif (file_exists($target_file)) {
        echo "Sorry, file already exists.";
    }
    // Check file size
    elseif ($_FILES["filename"]["size"] > 5000000) {
        echo "Sorry, file is too large.";
    } else {
        // Upload file
        if (move_uploaded_file($_FILES["filename"]["tmp_name"], $target_file)) {
            echo "File uploaded successfully.";
        }
    }
}

以上是为什么在 PHP 中上传文件时出现'未定义的变量:HTTP_POST_FILES”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn