Laravel 5.3 - Файл с загрузкой более 200 МБ с запросом obj null [duplicate]

Следующее описание взято из этой страницы :

Метод getElementsByClassName () возвращает коллекцию всех элементов в документе с указанным именем класса, так как объект NodeList.

Объект NodeList представляет собой набор узлов. К узлам можно обращаться по номерам индексов. Индекс начинается с 0.

Совет. Вы можете использовать свойство length объекта NodeList для определения количества элементов с указанным именем класса, затем вы можете прокручивать все элементы и извлекать нужную информацию .

blockquote>

Итак, поскольку параметр getElementsByClassName принимает имя класса.

Если это ваше тело HTML:





то var menuItems = document.getElementsByClassName('menuItem') вернет коллекцию (а не массив) из трех верхних

s, поскольку они соответствуют заданному имени класса.

Затем вы можете перебирать эти узлы (

s в этот случай) с помощью:

for (var menuItemIndex = 0 ; menuItems.length ; menuItemIndex ++) {
   var currentMenuItem = menuItems[menuItemIndex];
   // do stuff with currentMenuItem as a node.
}

Подробнее о различиях между элементами и узлами см. в этой записи .

33
задан hakre 22 June 2012 в 23:27
поделиться

5 ответов

Как отмечено в отредактированном вопросе $ _POST и $ _FILES пусты, когда PHP бесшумно удаляет данные (происходит, когда фактические данные больше, чем post_max_size). Поскольку HTTP-заголовок и $ _GET остаются неповрежденными, они могут быть использованы для обнаружения сбросов.

Параметр a)

if(intval($_SERVER['CONTENT_LENGTH'])>0 && count($_POST)===0){
    throw new Exception('PHP discarded POST data because of request exceeding post_max_size.');
}

Параметр b) Добавить параметр GET, который сообщает, присутствует. [/ д2]

30
ответ дан Augustus Kling 22 August 2018 в 11:07
поделиться
  • 1
    +1 для «исключения исключения»; – evilReiko 30 August 2013 в 19:38
  • 2
    Примечание: $ _SERVER ['CONTENT_LENGTH'] не всегда «всегда». set, хост сервера может отключить эту переменную от видимости – evilReiko 30 August 2013 в 20:02
  • 3
    Спасибо, это ответ! – brentonstrine 10 June 2014 в 23:33

Запустите phpinfo() и убедитесь, что ваши upload_max_filesize и post_max_size директивы достаточно велики.

http://us.php.net/manual/en/ini.core.php#ini.upload-max-filesize

http://us.php.net/manual/en/ini.core.php#ini.post-max-size

11
ответ дан Crontab 22 August 2018 в 11:07
поделиться
  • 1
    Это не затрагивает вопрос о том, почему $_POST пуст. Если произошла ошибка с размером файла, вы ожидаете сообщение об ошибке, а не пустое $_POST. – brentonstrine 10 June 2014 в 23:30
  • 2
    @brentonstrine Вы серьезно некрополит пост с октября 2011 года - почти три года назад - жаловаться на ответ и downvote? ОП пытался отправить файлы, превышающие их post_max_size. Это, в свою очередь (чтение OP), делает $_POST и $_FILES пустым. – Crontab 11 June 2014 в 14:51
  • 3
    Цель заключалась не в том, чтобы жаловаться, хотя я вижу, как это происходит. Ваш ответ был проголосован выше, чем ответ Августа, который намного больше, чем ваш, чтобы действительно объяснить, в чем проблема, и даже дает решение для обнаружения, когда $_POST пуст, потому что он превысил максимальную. Я поддержал его и проиграл ваши, чтобы его ответ был первым, так как он более полезен. Комментарий был просто предназначен как объяснение для downvote. Тем не менее я поддерживаю нижний уровень: критическая часть информации почему $_POST будет пустой. – brentonstrine 11 June 2014 в 17:05
  • 4
    post_max_size вызывал проблемы для меня. Спасибо @Crontab – Jack 12 October 2016 в 20:53

Вы можете проверить ошибки при загрузке с помощью:

if ($_FILES['images']['error'] !== UPLOAD_ERR_OK) {
   die("Upload failed with error code " . $_FILES['images']['error']);
}

Коды ошибок определены здесь здесь .

-1
ответ дан Marc B 22 August 2018 в 11:07
поделиться
  • 1
    Он сказал, что $_FILES пуст. Не удается проверить, чего не существует. – mpen 30 January 2013 в 22:36

я могу упомянуть, что если вы обрабатываете форму, как показано ниже

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

, если post_max_size ниже опубликованных данных, тогда $ _POST ['submit'] будет пустым

1
ответ дан Mir hossein Mousavi 22 August 2018 в 11:07
поделиться

Есть некоторые ограничения - как на стороне клиента, так и на стороне сервера.

На стороне клиента поле MAX_FILE_SIZE не имеет большого значения, возможно, браузер может воспринимать его как подсказку; но браузеры следуют своим настроенным ограничениям.

На стороне сервера проверьте php.ini для:

upload_max_filesize = 5M

post_max_size = 5M 

max_input_time = ...

Также проверьте журнал Apache для заметок о потерянном тесте POST или таком.

0
ответ дан Ondra Žižka 22 August 2018 в 11:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: