PHP: $_FILES returns 空

PHP: $_FILES returns empty

如果这个问题的某些部分没有意义,请原谅——我是一般编程的新手。欢迎指正!

这是我的问题:我正在制作一个使用 $_POST 的 PHP 上传页面。 HTML 部分有两个上传字段,都是可选的。所以这是我的代码,比方说,example-upload.php:

<form action="" enctype="multipart/form-data" method="post">
    <input type="file" id="upload1" name="upload1" accept=".jpg">
    <input type="file" id="upload2" name="upload2" accept=".jpg">
    <button type="submit" name="submit">Submit either, both, or none of these</button>
</form>
<?php
if (isset($_POST['submit'])) {
    if (!empty($_POST['upload1'])) {
        $filename_upload1 = $_FILES['upload1']['name'];
    }
    if (!empty($_POST['upload2'])) {
        $filename_upload2 = $_FILES['upload2']['name'];
    }
    // Checks if there is no upload at all
    if (!isset($filename_upload1) && !isset($filename_upload2)) {
        echo 'You didn\'t upload anything and that\'s OK';
    } else {
        if (isset($filename_upload1)) {
            move_uploaded_file($_FILES['upload1']['tmp_name'], 'path/to/file/' . $filename_upload1);
        }
        if (isset($filename_upload2)) {
            move_uploaded_file($_FILES['upload2']['tmp_name'], 'path/to/file/' . $filename_upload2);
        }
        echo 'One or two files was successfully uploaded';
    }
}
?>

每次我 运行 提交一个或两个文件时,我都会收到 "You didn't upload anything and that's okay" 消息,让我相信我对 $_FILES 变量做错了什么。不寻常的是,我在类似页面上有不同的表单,除了一个上传字段而不是两个。这似乎有效。

有什么建议吗?谢谢!

您的表单中没有 $_POST['upload1'] 变量。 文件在 $_FILES 数组中传递。

因此,在最简单的情况下,您可以检查 $_FILES['upload1']['name']:

if (!empty($_FILES['upload1']['name'])) {
    $filename_upload1 = $_FILES['upload1']['name'];
}

upload2 进行同样的检查:

if (!empty($_FILES['upload2']['name'])) {
    $filename_upload2 = $_FILES['upload2']['name'];
}

您必须检查 $_FILES 而不是 $_POST

if (!empty($_FILES['upload1']))
{
    $filename_upload1 = $_FILES['upload1']['name'];
}