Загрузка файла Zend: Файл превышает определенный размер ini - PullRequest
13 голосов
/ 23 июня 2011

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

$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'));

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

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

  • file_uploads: On
  • upload_max_filesize: 2000M
  • memory_limit: 128M
  • post_max_size: 8M

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

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

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

Ответы [ 8 ]

14 голосов
/ 23 июня 2011

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

6 голосов
/ 01 июня 2013

Добавить

enctype="multipart/form-data"

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

3 голосов
/ 01 апреля 2013

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

2 голосов
/ 15 марта 2012

Скорее всего, расширение php fileinfo не активировано.

1 голос
/ 19 января 2018

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

1 голос
/ 26 сентября 2012

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

->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 )

Так что я раскомментировал это, и все снова заработало.

1 голос
/ 23 июня 2011

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

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

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

0 голосов
/ 23 июня 2011

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

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

Ваш валидатор проверяет размер файла == 5242880, НЕ <= 5242880. </p>

...