Yii allows you to upload a file and store the file name in your database fairly simply. In your view make sure you include 'multipart/form-data' - example view
<?php /** @var BootActiveForm $form */
$form = $this->beginWidget('bootstrap.widgets.TbActiveForm', array(
'id'=>'verticalForm',
'htmlOptions'=>array('class'=>'well','enctype' => 'multipart/form-data'),
)); ?>
<div class="row">
<?php echo $form->labelEx($model,'file_name'); ?>
<?php echo CHtml::activeFileField($model,'file_name', array("style"=>"color:green;")); ?>
<?php echo $form->error($model,'file_name'); ?>
</div>
Then in your controller you can use something like
public function actionCreate()
{
$model=new NewTask;
$dir = Yii::getPathOfAlias('application.uploads');
if(isset($_POST['NewTask']))
{
$model->attributes=$_POST['NewTask'];
$model->file_name=CUploadedFile::getInstance($model,'file_name');
$nf = $model->file_name;
if($model->save())
{
$model->file_name->saveAs($dir.'/'.$fn);
$model->file_name = $fn;
$model->save();
........
Obviously you need to set up your database table (in this example file name is stored in attribute file_name). So in your model you can set some rules - in this example I only allow upload of xml files
public function rules()
{
return array(
array('file_name', 'file', 'on'=>'insert',
'types'=>'xml',),
array('file_name', 'file', 'on'=>'update',
'allowEmpty'=>true,
'types'=>'xml',),
.....
Read
CUploadedFile