Yii框架上传图片用法总结
本文实例讲述了Yii框架上传图片用法。分享给大家供大家参考,具体如下:
Yii提供了CUploadedFile来上传文件,比如图片,或者文档。
官方关于这个类的介绍:
CUploadedFilerepresentstheinformationforanuploadedfile.
CallgetInstancetoretrievetheinstanceofanuploadedfile,andthenusesaveAstosaveitontheserver.Youmayalsoqueryotherinformationaboutthefile,includingname,tempName,type,sizeanderror.
publicproperties
1、模型层面M,把一个字段在rules方法里设置为file属性。
array('url', 'file',//定义为file类型 'allowEmpty'=>true, 'types'=>'jpg,png,gif,doc,docx,pdf,xls,xlsx,zip,rar,ppt,pptx',//上传文件的类型 'maxSize'=>1024*1024*10,//上传大小限制,注意不是php.ini中的上传文件大小 'tooLarge'=>'文件大于10M,上传失败!请上传小于10M的文件!' ),
2、视图层View,这里需要用到CHtml::activeFileField来生成选择文件的button,注意是上传文件,所以在该标单中enctype应该设置为:multupart/form-data
<?php$form=$this->beginWidget('CActiveForm',array( <spanstyle="white-space:pre"></span>'id'=>'link-form', <spanstyle="white-space:pre"></span>'enableAjaxValidation'=>false, <spanstyle="white-space:pre"></span>'htmlOptions'=>array('enctype'=>'multipart/form-data'), ));?>
<divclass="row"> <?phpecho$form->labelEx($model,'url');?> <?phpechoCHtml::activeFileField($model,'url');?> <?phpecho$form->error($model,'url');?> </div>
3、控制层C
$model=newLink; if(isset($_POST['Link'])) { $model->attributes=$_POST['Link']; if(empty($_POST['Link']['name'])){ $model->name=$model->url; } $file=CUploadedFile::getInstance($model,'url'); //获得一个CUploadedFile的实例 if(is_object($file)&&get_class($file)==='CUploadedFile'){ //判断实例化是否成功 $model->url='./assets/upfile/file_'.time().'_'.rand(0,9999).'.'.$file->extensionName;//定义文件保存的名称 }else{ $model->url='./assets/upfile/noPic.jpg'; //若果失败则应该是什么图片 } if($model->save()){ if(is_object($file)&&get_class($file)==='CUploadedFile'){ $file->saveAs($model->url);//上传图片 } $this->redirect(array('view','id'=>$model->lid)); } }
更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。