yii上传图片

来源:互联网 发布:2017网络流行语有哪些 编辑:程序博客网 时间:2024/06/10 04:37

首先在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")))', //在这设置显示的图片的大小
            ),
),

原创粉丝点击