首先在model里面设置rule
array('img_path','file','types'=>'jpg,gif,png','maxSize'=>1024 * 1024 * 1,'tooLarge'=>'上传文件超过 1MB,无法上传。','allowEmpty'=>true,),//图片是否为必填项可以ture和false
先来view层的from的代码
<?php echo $form->labelEx($model,'img_path'); ?>
<?php echo CHtml::activeFileField($model,'img_path'); ?> //显示上传图片的按钮和框
<?php if(!$model->isNewRecord){?>//如果为编辑的话,显示图片
<?php if($model->img_path){?>
<?php echo CHtml::image(Yii::app()->request->baseUrl.'/'.$model->img_path,'图片的说明',array('width'=>'20%')); ?>//显示图片
<?php }?>
<input type="hidden" name="img_path2" id="hiddenField" value="<?php echo $model->img_path;?>"/>//存在依旧要获得原来的图片路径,否则会出现信息丢失
<?php }?>
<?php echo $form->error($model,'img_path'); ?>
下面为control层
$model->img_path=CUploadedFile::getInstance($model,'img_path');//获得上传的图片
if($model->img_path)
{
$basedir = dirname(yii::app()->basePath);//确定根目录
$uploaddir= $basedir.'/uploads/links/'; //确定要存的目录
$newimg = time().'_'.rand(1, 9999).'.'.$model->img_path->extensionName;//根据时间戳重命名文件名,extensionName是获取文件的扩展名
$uploadfile = $uploaddir.$newimg;
$filedir='uploads/links/'.$newimg;
$model->img_path->saveAs($uploadfile);//在服务器上的的路径保存
$model->img_path = $filedir;//要存入的数据库的路径
}
else
{
$model->img_path = $_POST['img_path2'];//这个是当编辑以后获得的img_path2的路径
}
下面是view的显示代码
array(
'header'=>'图片',
'type'=>'raw',
'value'=>'CHtml::link(CHtml::image(Yii::app()->request->baseUrl."/".$data->img_path,"图片的说明",array("width"=>"200px","height"=>"200px")))', //在这设置显示的图片的大小
),
),