Я использую следующий код формы 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( )
Вы не закрываете теги input
. В частности, вы не закрываете <input type="file" name="file[]" multiple>
, поэтому, возможно, он не добавляется в массив формы $_POST
правильно и вместо этого добавляется в file
массив. Просто догадка.
Проблема, похоже, связана с размером файлов. Если файлы имеют размер 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>";
}
}
}
?>