-1

我只想允许最大 1MB 的文件

 array('taskfile', 'file', 'allowEmpty' => true, 'maxSize' => 1024 * 1024 * 1,'on' => 'newTask, edit'),

现在,我的 php.ini 允许 post_max_filesize 为 8MB。如果文件小于 8MB 但大于 1MB,则会正确显示文件验证错误。

但如果文件大于 8MB,则不会出现来自 yii 的错误,而是来自 php 本身。问题是,它也出现在实时模式中。

Warning: POST Content-Length of 12028878 bytes exceeds the limit of 8388608 bytes in Unknown on line 0

为什么 yii 不检查文件大小并抛出验证错误?我怎样才能做到这一点?

解决了:

好的,我用一个小助手方法解决了它。

我添加了一个新的验证规则

 array('taskfile', 'checkMaxPostSize', 'on' => 'newTask, edit'),

和辅助方法

    public function checkMaxPostSize($attribute) {
    if (isset($this->taskfile)) {
        if ($this->taskfile->size > 1024*1024*1 ) {
            $this->addError($attribute, 'file is tooooooo large');
        }
    }
}
4

1 回答 1

0

我认为您最初的问题是'on'您的验证器的一部分。当你有多个验证器时,它们需要是一个数组;正确的代码如下所示:

array('taskfile', 'file', 'allowEmpty' => true, 'maxSize' => 1024 * 1024 * 1,'on' => array('newTask', 'edit')),
于 2012-10-05T21:50:47.497 回答