Yii предоставляет очень удобную систему для валидации и загрузки различных типов файлов на сервер.
Для того, чтобы начать загружать и сохранять файлы в модели нужно:
1) создать поле
public $imageFile="";
в классе модели
2) создать новое правило валидации:
array('imageFile', 'file', 'types'=>'jpg, gif, png' , 'allowEmpty'=>true),
Всё стандартно, сначала название поля, потом тип валидации, потом дополнительные параметры. У нас это тип загружаемого файла. Последнее свойство делает загрузку файла необязательной.
3) Теперь в теле контроллера нужно обработать поле:
$productModels->imageFile = CUploadedFile::getInstance($productModels, 'imageFile');
$productModels->attributes = $_POST['Product'][$i];
...
$productModels->imageFile->saveAs('storage/name'.time()'.jpg');
$productModels->image = Yii::app()->getBaseUrl(true).'/storage/name'.time().'.jpg';
Сначала мы присваиваем нашему атрибуту файл при помощи хелпера CUploadedFile.
Затем сохраняем этот файл в одной из папок (не забудьте установить права на запись папке).
И сохраняем путь до файла в виде ссылки.
Другие правила валидации типа file вы можете посмотреть на yiiframework.com