Hola.
Tengo el formulario del modelo Producto, que tiene una serie de atributos, como precio,…, en la base de datos, guardo esos atributos y el nombre de la foto con su tipo es decir "1.jpg", el controlador tendría que guardar la foto en el directorio x pero con el nombre modificado al de id de su inserción y con su extensión.
El problema está, en que nada más empezar con esto y siguiendo los pasos de este link, parece que no me funciona, el formulario de error me dice: (Archivo no puede ser nulo), cuando sí que se lo he especificado un archivo.
Si alguien sabe que hago mal 
Modelo
class Productos extends CActiveRecord { 
        $public archivo;
        public function rules() {
                return array(
                        array('foto', 'required'), 
                        array('foto','length', 'max' => 100),
                        array('archivo','file','types'=>'jpg, gif, png'),
                };
        }
        public function attributeLabels() {
                return array(
                        'foto'=>'Foto',
                        'archivo'=>'Archivo',
                };
        }
}
Controlador
...
        public function actionCreate() {
                $model = new Productos;        
                if (isset($_POST['Productos'])) {
                      $model->attributes = $_POST['Productos'];
                      $archivo=CUploadedFile::getInstance($model,'archivo');
                      $model->foto=$archivo->name;
                      if ($model->save()){               
                             $model->archivo->saveAs('/images/productos/');
                             $this->redirect(array('view', 'id' => $model->id));
                      }
                 }
                 $this->render('create', array('model' => $model,));
         }
...
Formulario (_form.php)
<?php
    $form = $this->beginWidget('CActiveForm', array(
                'id' => 'productos-form',
                'enableAjaxValidation' => false,
            ));
     $form->errorSummary($model);
?>
<div class="row">
            <?php echo $form->labelEx($model, 'archivo'); ?>
            <?php echo $form->FileField($model, 'archivo'); ?>
            <?php echo $form->error($model, 'archivo'); ?>
</div>
<?php echo CHtml::submitButton($model->isNewRecord ? 'Guardar' : 'Save'); ?>
<?php $this->endWidget(); ?>