我的原则,只有三个字,看心情。

yii CUploadfile类上传文件

1.首先在model中对保存文件名的属性限制一下上传文件的类型和大小

  array('IDCardPic','file',    //定义为file类型  
                                'allowEmpty'=>false,//不允许为空
                                'maxSize'=>1024 * 1024 * 10,//最大为10M
                                'types'=>'jpg, png, gif, jpeg, bmp',   //上传文件的类型  
                                 'tooLarge'=>'头像最大不超过1MB,请重新上传!',  
                                 )

2.在view中

首先在form中添加:

'htmlOptions'=>array('enctype'=>'multipart/form-data')

然后呢,就可以直接用


<?php echo CHtml::activeFileField($vm, 'IDCardPic'); ?>
这是上次文件的按钮<?php echo CHtml::activeFileField($vm, 'IDCardPic'); ?>


3.最后在控制器中收集上传的文件:

注意:不能用$_POST[...]来收集,因为文件上传后属性在$_FILE[...]中,所以直接用

$file=CUploadedFile::getInstance($vm,'IDCardPic');
便可以收集数据,然后保存文件即可

 $file->saveAs(Yii::app()->basePath.'/..'.$vm->IDCardPic);    // 保存图片  

自己也捣鼓了一晚上才获得如上的经验,因为刚开始对这个机制不是很熟悉,所以,,,你懂的

标签yii 上传文件

最新评论