最新消息: 新版网站上线了!!!

Yii 上传图片 (使用CUploadedFile类 以及 activeFileField控件)

1)首先,设置form,这一步一 定要做,把form设置为’multipart/form-data’,
[views  _form.php]
<?php $form=$this->beginWidget(CActiveForm’, array(id’=>’books-form’,
‘enableAjaxValidation’=>false,
‘htmlOptions’=>array(enctype’=>’multipart/form-data),
)); ?>2) 接着,在view下的form里设置:
[views  _form.php]
<div class=”row”>
<?php echo $form->labelEx($model,’BookImg); ?>
<?php echo CHtml::activeFileField($model,’BookImg); ?>
<?php echo $form->error($model,’BookImg); ?>
</div>
(3) 如果你想预览图片,那么请注意了,可以加上这么一段:
<div class=”row”>  
<?php echo ‘图片预览’ ?>  
<?php echo ‘<img src=”http://www.yerlife.cn/’.$model->BookImg.’” style=”width:200px;height:300px;”/>’; ?>  
</div>  
(4)最后,需要在控制类里加上下面的:
$image=CUploadedFile::getInstance($model,’BookImg);
if (is_object($image) && get_class($image)===’CUploadedFile)
{
$model->BookImg=’D:/aaa/aaa.jpg’;  //请根据自己的需求生成相应的路径,但是要记得和下面保存路径保持一致
}
else
{
$model->BookImg=’NoPic.jpg’;
}
if($model->save())
{
if (is_object($image) && get_class($image)===’CUploadedFile)
{
$image->saveAs(D:/aaa/aa.jpg);//路径必须真实存在,并且如果是linux系统,必须有修改权限
}
$this->redirect(array(view’,’id’=>$model->BookId));
}
请注意:这里是添加的时候使用的,修改的话要有所改变。
(5)限制上传的文件必须是图片,还有限制图片大小,那么请到model层里的rules新增这么一句:
array(BookImg’, ‘file’,’allowEmpty’=>true,
‘types’=>’jpg, gif, png’,
‘maxSize’=>1024 * 1024 * 1, // 1MBtooLarge’=>’The file was larger than 1MB. Please upload a smaller file.’,
)
 
<?php $form=$this->beginWidget(CActiveForm’, array(id’=>’books-form’,‘enableAjaxValidation’=>false,‘htmlOptions’=>array(enctype’=>’multipart/form-data),)); ?>6):注意在public function actionUpdate($id) 也要添加第四步。

转载请注明:谷谷点程序 » Yii 上传图片 (使用CUploadedFile类 以及 activeFileField控件)