Почему $ _POST не распознает определенные загруженные файлы?

0

Ты не поверишь этой вине, я понятия не имею, что происходит. Когда я пытаюсь загрузить файлы, некоторые из них отказываются загружать файлы.

<html>
<body>
<?php
var_dump($_POST);
if ($_POST['fileadd']){
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    print_r($_POST); echo "<br>"; print_r($_FILES);
}
?>

        <form action="" method="POST"
        enctype="multipart/form-data">
        <label for="file">Filename:</label>
        <input type="file" name="file" id="file" class="bigtext" style="width: 80%;"> 
        <br>
        <input type="submit" class="bigbutton" id="showloader" name="fileadd" value="Upload the song" />
        </form>


</body>
</html>

Здесь он находится в действии. Проблема заключается в том, что он говорит массив 0, который он не должен указывать.

Кроме того, когда я выбираю определенные файлы, массив $_POST равен nil/zero, когда в нем должно быть хотя бы fileadd, как имя кнопки отправки?

Теги:
file-upload
upload

2 ответа

2
Лучший ответ

После просмотра полного кода и беседы с OP по поиску решения проблемы, поставили проблему следующим образом:

Эта:

if ($_POST['fileadd']){

Необходимо изменить на:

if(isset($_POST['fileadd']))

чтобы проверить, была ли установлена кнопка "Отправить".

Также максимальный размер загрузки был установлен слишком низким в соответствии с размером файлов, которые были загружены, используя следующее в .htaccess чтобы увеличить его.

php_value upload_max_filesize 48M
php_value post_max_size 48M
  • 0
    И если трюк .htaccess не работает, вы можете использовать ini_set('upload_max_filesize','15M'); ini_set('post_max_size','15M'); внутри вашего php-файла, а затем используйте echo ini_get('upload_max_filesize'), ", " , ini_get('post_max_size'); проверить значения. В качестве альтернативы вы можете использовать эту конфигурацию в вашем файле php.ini в вашем рабочем каталоге.
  • 0
    @desbest Хорошее дополнение, спасибо. Если бы вы могли принять ответ, мы могли бы его закрыть. Рад, что все получилось к лучшему, ура!
Показать ещё 2 комментария
2

Вы просто считаете, что ваш код совершенен. Не это. Он предполагает, что загрузка файлов ВСЕГДА преуспевает и не допускает возможности сбоя. Вам нужно иметь что-то большее:

if ($_FILES['file']['error'] !== UPLOAD_ERR_OK) {
   die("File upload failed with error code #" . $_FILES['file']['error']);
}

Коды ошибок определены здесь: http://www.php.net/manual/en/features.file-upload.errors.php

  • 0
    Да, но, учитывая, что кнопка отправки с именем fileadd существует, почему при загрузке определенных файлов $_POST становится пустым?
  • 1
    Вы не должны проверять поля формы, чтобы определить, произошло ли POST. Используйте if ($_SERVER['REQUEST_METHOD'] === 'POST') { ... } . Это на 100% надежно.
Показать ещё 2 комментария

Ещё вопросы

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