我用 yii 上传文件,我想验证这些文件。但是对于不同类型的文件 - 不同的大小。例如 - 如果用户想要上传 jpg 或 pdf 文件 - maxSize - 10 MB。- 对于视频文件 - maxSize - 150 MB。
我怎么能这样?
此变体不起作用,因为仅适用于第二条规则。
public function rules()
{
return array(
array('files', 'validateFiles', 'types' => 'jpg, gif, png, pdf, doc, docx', 'maxSize' => 10 * 1024 * 1024, 'on' => 'upload'),
array('files', 'validateFiles', 'types' => 'avi, mpg, flv, mov, mpeg, mp4, 3gp, wmv', 'maxSize' => 150 * 1024 * 1024, 'on' => 'upload'),
}
public function validateFiles($attribute, $params)
{
$validator = CValidator::createValidator('file', $this, $attribute, $params);
$files = array();
foreach(CUploadedFile::getInstances($this, $attribute) as $file) {
$this->$attribute = $file;
$files[] = $file;
$validator->validate($this, $attribute);
}
$this->$attribute = $files;
}