PHP - $_FILES 数组为空 [重复]

Posted

技术标签:

【中文标题】PHP - $_FILES 数组为空 [重复]【英文标题】:PHP - $_FILES array is empty [duplicate] 【发布时间】:2014-03-23 07:15:13 【问题描述】:

是的,enctype 属性已设置。其他表单/表单处理程序工作正常,因此临时目录必须是可写的。我没有想法了。

我检查了帖子值,$_POST['file'] 存在并包含文件名。

这是我的表单和处理它的 php。我错过了什么?

<form action='orl_ftp.php' method='post' enctype='multipart/form-data'>
    <table>
        <tr>
            <td>Choose File: </td>
            <td><INPUT type='file' id='file' name='file'></td>
        </tr>
        <tr>
            <td>&nbsp;</td>
            <td><INPUT type='submit' name='Submit' value='Process'></td>
        </tr>
    </table>
</form>

以及相关的PHP代码。请注意,$_FILES 数组已设置,它只是

if(isset($_POST['Submit']))
    $upload_results = "";
    if(!isset($_FILES))$upload_results .= "No files uploaded"; 
    if($upload_results == "")

        echo "<pre>";
        var_dump($_FILES);
        exit;

        // ...

    

【问题讨论】:

由于您已将文件字段命名为与 id 相同的名称,是否会发生冲突? @PhilipG 真的是这样吗?我曾经构建的每个文件上传表单我只使用file 作为名称和 ID,它一直有效.. 我会尝试更改它,不会受伤.. 我不太明白这里的问题。如果没有上传任何内容,那么您不能指望它显示任何内容。我在任何地方都看不到move_uploaded_file,所以这告诉我这不是完整的代码。要添加,您说“数组”。在处理数组时,如果你是,那么这个name='file' 需要括号name='file[]' PHP 具有控制最大上传大小的变量。您的 Web 服务器具有限制最大请求大小的配置。你还没有发布关于这两个的任何信息。我建议你谷歌一下。 完成这个检查清单:***.com/a/3587158/930917 【参考方案1】:

在第 101 行:

<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" />
                                                                 ^

这是导致问题的原因,浏览器保持此表单打开,因此缺少enctype 是问题所在。正确删除或关闭此表单。

例子:

<?php
if(isset($_POST['Submit']))
    $upload_results = "";
    if(!isset($_FILES))$upload_results .= "No files uploaded"; 
    if($upload_results == "")
        echo "<pre>";
        var_dump($_FILES);
        exit;
    

?>
<form action='' method="post" />
<form action='' method='post' enctype='multipart/form-data'>
    <table>
        <tr>
            <td>Choose File: </td>
            <td><INPUT type='file' id='file' name='file'></td>
        </tr>
        <tr>
            <td>&nbsp;</td>
            <td><INPUT type='submit' name='Submit' value='Process'></td>
        </tr>
    </table>
</form>

这不会发布任何文件。

【讨论】:

@AlirezaFallah,他在编辑帖子之前做过。我到底为什么要编造这个? 不,他不是吗?标签末尾没有斜线! 是的,我以前做过,当我发布这个时意识到,但我修复了它,它仍然坏了。 @Adelphia,我已取消删除我的问题并更正了它。一开始我是对的,但不是正确的行,因为您没有发布所有相关代码。 @Adelphia 为展示完整代码付出了代价 ;-) 重要的是小事。 ;-)【参考方案2】:

您在同一个脚本中有多个表单,因此每个表单都需要enctype='multipart/form-data'

此外,您似乎没有关闭第一个表单并且执行 &lt;form ... /&gt; 不是有效的 html

【讨论】:

这解决了我的问题,谢谢!基本上,如果页面上有超过 1 个表单,请正确关闭它们。

以上是关于PHP - $_FILES 数组为空 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

$_FILES 数组在不上传任何内容时不为空

AJAX PHP 图片上传不起作用,$_FILES 为空?

提交表单后 $_FILES 为空 [重复]

Magento 图像文件上传器错误:$_FILES 数组为空

PHP 文件上传之常见问题($_FILES为空,move_uploaded_file()函数报错)

在 ReactJs 中使用 axios 发送 POST 请求时 $_FILES 为空