Загрузка нескольких файлов: isset ($ _ POST ['submit']) возвращает False

0

Я использую следующий код формы 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( )
  • 1
    попробуйте print_r ($ _ POST), чтобы проверить переменные записи
  • 0
    Array () - это все, что я получаю. Спасибо ах
Показать ещё 2 комментария
Теги:

2 ответа

1

Вы не закрываете теги input. В частности, вы не закрываете <input type="file" name="file[]" multiple>, поэтому, возможно, он не добавляется в массив формы $_POST правильно и вместо этого добавляется в file массив. Просто догадка.

  • 0
    Спасибо за указание на это. Я внес изменения в код в моем вопросе, а также добавил полученный результат. К сожалению, хотя вы были правы в отношении моей ошибки, ее исправление не устранило проблему. Благодарю.
  • 0
    Вы не используете IE9 или ниже, не так ли?
Показать ещё 1 комментарий
0

Проблема, похоже, связана с размером файлов. Если файлы имеют размер 11 МБ, сообщение работает только с одним из них. Если я выбираю оба $ _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>

uploadFiles.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>";
            }
        }
    }
?>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню