PHP: $_FILES returns empty


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';
    }
}
?>

每次我运行这个程序,提交一个或两个文件时,我都会收到"你没有上传任何内容,没关系"的消息,这让我相信我在$_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'];
}