Подтвердить что ты не робот

Zend Загрузка файла: файл превышает определенный размер ini

Внутри моей формы я определяю это поле для загрузки файла:

$this->setEnctype(Zend_Form::ENCTYPE_MULTIPART);

$logo = $this->createElement('file', 'logo');
$logo->setLabel('Group logo')
     ->setMaxFileSize(5242880) // 5mb
     ->addValidator('IsImage')
     ->addValidator('Count', false, 1)
     ->addValidator('Size', false, 5242880)
     ->addValidator('Extension', false, array('jpg', 'jpeg', 'png', 'gif'));

Однако, независимо от того, как загружаются небольшие файлы, я получаю эту ошибку: "Логотип" файла превышает определенный размер ini.

Сообщение об ошибке показалось довольно прямым, поэтому я проверил php config (phpinfo() на той же точной странице, которая обрабатывает форму)

  • file_uploads: Вкл
  • upload_max_filesize: 2000M
  • memory_limit: 128M
  • post_max_size: 8M

Хотя эти значения не совсем понятны, они абсолютно должны позволять мне загружать файлы до 8 Мб, но загрузка всегда заканчивается сообщением сверху. Даже файлы размером менее 1 Кб не работают. Я также попытался удалить все сеттеры/валидаторы, но он все равно не работает.

Во время поиска ответа я столкнулся с некоторыми сообщениями, в которых говорилось, что это была ошибка ajax, но это обычная форма, поэтому теперь я застрял.

Обновление: Мне ужасно жаль, что вы потратили свое время, на странице была другая открытая форма, которая аннулировала множественную декларацию. Мог бы найти это раньше, если бы я тестировал более крупные файлы, а не маленькие:/

4b9b3361

Ответ 1

Добавьте enctype="multipart/form-data" в свою форму. Он должен решить вашу проблему.

Ответ 2

Добавить

enctype="multipart/form-data"

к вашему элементу <form>. Решила мою проблему.

Ответ 3

если вы используете файл script для рендеринга вашего файла, вам необходимо получить информацию о enctype, указанную вами в классе формы, из вашего файла script. <form enctype="<?php echo $this->element->getAttrib("enctype"); ?>">

Ответ 4

Скорее всего, файл php extensioninfo не активирован.

Ответ 5

Похоже, что вам не хватает места назначения:

$logo->setLabel('Group logo')
     ->setDestination('/var/www/upload')
     ...

Возможно, вам захочется убедиться, что папка может быть записана вашим веб-сервером.

Ответ 6

Когда я прокомментировал следующее, я получил ту же ошибку:

->setDestination($this->_config->folder->ugc);
->addValidator(Kvadrat_Form_Element_File::VALIDATE_COUNT, true, 1);
->addValidator(Kvadrat_Form_Element_File::VALIDATE_SIZE, true, 5 * 102400);

(Я прокомментировал это, так как выполнял загрузку файлов отдельно FormData)

Итак, я раскоментировал его, и все это снова работало.

Ответ 7

Неправильно установлен валидатор вашего размера. Вы должны использовать этот формат:

->addValidator('Size', false, array('max' => '5242880'))

Ваш валидатор проверяет размер файла == 5242880, NOT <= 5242880.

Ответ 8

Проверьте файл php.ini и увеличьте upload_max_filesize. По умолчанию это 2M (2 мегабайта). Кроме того, чтобы иметь возможность отправлять файлы размером более 2 М, вам необходимо обновить значение post_max_size