PHP / CodeIgniter - $ _FILES игнорируется полностью - PullRequest
3 голосов
/ 02 декабря 2010

У меня есть следующее на мой взгляд

<input class="file" name="mpfile[]" type="file" size="32" />

В моем контроллере у меня есть следующий код.

if(isset($_FILES['mpfile'])) {
    echo 'testing';
}

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

Ответы [ 9 ]

8 голосов
/ 02 декабря 2010

Убедитесь, что ваш элемент FORM имеет следующие атрибуты:

method="POST"

и

enctype="multipart/form-data"

  • Christian
2 голосов
/ 02 декабря 2010

проверьте ваш PHP.ini для:

file_uploads = "1"
post_max_size = 50000
upload_max_file_size = 2M

сделать phpinfo();

заявление об отказе значения php.ini могут быть немного не такими, но я уверен, вы их найдете имена правильные, не уверен, что значения.

0 голосов
/ 13 мая 2014

Вы определяете массив:

<input class="file" name="mpfile[]" type="file" size="32" />

В PHP переменная $_FILES['mpfile'] также будет (пустым) массивом.Если вы теперь тестируете с isset, тогда он установлен, потому что это массив (и никогда не нуль).

Тест с empty().

0 голосов
/ 13 мая 2014
if (!empty($_FILES['mpfile']['name'])) {
    var_dump($_FILES['mpfile']['name']);
}
0 голосов
/ 04 декабря 2010

Вам также необходимо проверить наличие пустого файла:

if (isset($_FILES['userfile']) && $_FILES['userfile']['error'] != 4)

Смотрите этот пост:

http://codeigniter.com/forums/viewthread/136610/#673652

"Поле загрузки помещается в $ _FILESдаже если он пуст, а ошибка и размер установлены равными 4 и 0 соответственно "

Изменить, чтобы добавить:

Я никогда не загружал несколько, но я думаю, что в вашем случае вы бы добавили['mpfile'] перед каждым ['userfile'] в тесте

0 голосов
/ 02 декабря 2010

Вот еще один удар в темноте.Проверьте код ошибки:

if($_FILES['mpfile']['error'] != UPLOAD_ERR_NO_FILE) {
     echo 'testing'; 
}
0 голосов
/ 02 декабря 2010

Вы пытались использовать класс загрузки Codeigniter. Codeigniter может опустошать $_FILES вместе с другими глобалами.

Возможно, попробуйте выгрузить $_FILES в начало codeigniters index.php, чтобы убедиться,

0 голосов
/ 02 декабря 2010

Предполагая, что <input> встроен в <form>, который делает POST в вашем скрипте, вы пробовали сбросить $_FILES? E.g.:

<code>if ('POST' == $_SERVER['REQUEST_METHOD'])
  {
     print '<pre>'.var_export($_FILES,TRUE).'
'; }

Можете ли вы опубликовать результат? Также включена ли загрузка для PHP?

0 голосов
/ 02 декабря 2010
  if(isset($_FILES['mpfile']['name']) && $_FILES['mpfile']['name'])
  {
    echo 'testing';
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...