【问题标题】:Multiple File Upload: isset($_POST['submit']) Returns False多个文件上传:isset($_POST['submit']) 返回 False
【发布时间】:2014-01-01 10:41:42
【问题描述】:

我正在使用以下 html 表单代码来允许用户选择多个文件进行上传。

<form action="uploadFiles.php" method="post" enctype="multipart/form-data">
    <label for="file">Filename:</label>
    <input type="file" name="file[]" multiple /><br>
    <input type="submit" name="submit" value="submit" />
</form>

uploadFiles.php 代码如下。

<?php
    echo "uploadFiles.php" . "<br>";
    print_r($_POST);
    if(isset($_POST['submit']))
    {
       echo "Post submit" . "<br>";
       if ($_FILES["file"]["error"][0] > 0)
       {
            echo "Error: " . $_FILES["file"]["error"][0] . "<br>";
        }
        else
        {
              echo "No. files uploaded : ".count($_FILES['file']['name'])."<br>";
              echo "Upload: " . $_FILES["file"]["name"][0] . "<br>";
              echo "Type: " . $_FILES["file"]["type"][0] . "<br>";
              echo "Size: " . ($_FILES["file"]["size"][0] / 1024) . " kB<br>";
              echo "Stored in: " . $_FILES["file"]["tmp_name"][0];
        }
    }
?>

由于某种原因,isset($_POST['submit']) 总是返回 false。我得到以下输出

uploadFiles.php
Array( )

【问题讨论】:

  • 尝试 print_r($_POST) 检查帖子变量
  • Array() 是我所得到的。谢谢,哦
  • 您是直接调用uploadFiles.php(不通过表单),还是在您实际发布表单数据后发生这种情况?
  • uploadFiles.php 通过单击表单上的提交按钮来调用。如果我使用
    代替,它适用于一个文件,但这只允许用户选择一个文件。谢谢。

标签: php html


【解决方案1】:

问题似乎与文件大小有关。如果文件大小为 11 MB,则帖子仅适用于其中一个。如果我同时选择 $_POST 是一个空数组。如果文件是该大小的一半,则帖子可以使用以下代码同时处理两者。

HTML

 <form action="uploadFiles.php" method="post" enctype="multipart/form-data">
    <label for="file">Filename:</label>
    <input type="file" name="file[]" multiple="multiple"/></br>
    <input type="submit" name="submit[]" value="submit" />
 </form>

上传文件.php

<?php
    if(isset($_POST['submit']))
    {
       if ($_FILES["file[]"]["error"] > 0)
       {
            echo "Error: " . $_FILES["file[]"]["error"] . "<br>";
        }
        else
        {
            $numFilesUploaded=count($_FILES['file']['name']);
            echo "No. files uploaded : ".$numFilesUploaded."<br><br>";
            for ($inc=0; $inc<$numFilesUploaded; ++$inc){
                echo "File " . $inc . ": " . $_FILES["file"]["name"][$inc] . "<br>";
                echo "Upload: " . $_FILES["file"]["name"][$inc] . "<br>";
                echo "Type: " . $_FILES["file"]["type"][$inc] . "<br>";
                echo "Size: " . ($_FILES["file"]["size"][$inc] / 1024) . " kB<br>";
                echo "Stored in: " . $_FILES["file"]["tmp_name"][$inc];
                echo "<br><br>";
            }
        }
    }
?>

【讨论】:

    【解决方案2】:

    您没有关闭 input 标记。特别是,您没有关闭 &lt;input type="file" name="file[]" multiple&gt; 标记,因此它可能没有正确添加到表单的 $_POST 数组中,而是被添加到 file 数组中。只是猜测。

    【讨论】:

    • 感谢您指出这一点。我对问题中的代码进行了更改,并添加了结果输出。不幸的是,虽然您对我的错误是正确的,但更正它并不能解决问题。谢谢。
    • 你用的不是IE9以下,是吗?
    • 没有。我正在使用 IceWeasel,它是 FireFox 的 Debian 版本。谢谢,
    猜你喜欢
    • 2017-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    相关资源
    最近更新 更多