-1

最大1MBのファイルのみを許可したい

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

今、私のphp.iniは8MBのpost_max_filesizeを許可します。ファイルが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 に答える