私は yii でファイルをアップロードし、それらのファイルを検証したいと考えています。ただし、ファイルの種類が異なる場合は、サイズが異なります。例 - ユーザーが jpg または pdf ファイルをアップロードしたい場合 - maxSize - 10 MB。- ビデオ ファイルの場合 - maxSize - 150 MB。
どうすればそうできますか?
2 番目のルールのみが機能するため、このバリアントは機能しません。
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;
}