Zend文件上传:文件超出定义的ini大小

oli*_*oli 13 php file-upload zend-form

在我的表单中,我定义了这个文件上传字段:

$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'));
Run Code Online (Sandbox Code Playgroud)

但是,无论我上传的文件有多小,我都会收到此错误:文件"徽标"超出了定义的ini大小.

错误消息似乎非常简单,所以我检查了php配置(phpinfo()在处理表单的同一页上)

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

虽然这些值并不完全有意义,但它们绝对应该允许我上传高达8Mb的文件,但上传始终会因上面的消息而失效.即使小于1Kb的文件也会失败.我也尝试删除所有setter /验证器,但它仍然失败.

在寻找答案时,我遇到了一些帖子,说这是ajax'的错,但这是一个常规形式,所以现在我被卡住了.

更新:我非常抱歉浪费了你的时间,页面上有另一个未公开的表格,这使得多部分声明无效.如果我用较大的文件测试而不是小文件,可以早点发现:/

Ale*_*tau 14

enctype="multipart/form-data"在表单中添加.它应该解决你的问题.


小智 6

enctype="multipart/form-data"
Run Code Online (Sandbox Code Playgroud)

你的<form>元素.解决了我的问题.


Ale*_*tau 1

您的尺寸验证器不正确。您应该使用这种格式:

->addValidator('Size', false, array('max' => '5242880'))
Run Code Online (Sandbox Code Playgroud)

您的验证器检查文件的大小 == 5242880,而不是 <= 5242880。